sql >> Databáze >  >> RDS >> MariaDB

MariaDB SUBSTR() Vysvětleno

V MariaDB, SUBSTR() je synonymem pro SUBSTRING() .

Je to vestavěná řetězcová funkce, která vrací podřetězec z daného řetězce.

Vyžaduje alespoň dva argumenty; řetězec a pozici, ze které se má podřetězec extrahovat. Přijímá také volitelný třetí argument, který vám umožňuje určit, jak dlouhý má být podřetězec.

Syntaxe

Syntaxe má následující tvary:

SUBSTR(str,pos), 
SUBSTR(str FROM pos), 
SUBSTR(str,pos,len),
SUBSTR(str FROM pos FOR len)

Kde str je řetězec, pos je počáteční pozice podřetězce a len je počet znaků k extrakci.

Dva formuláře, které používají FROM klíčová slova jsou standardní syntaxí SQL.

Příklad

Zde je základní příklad:

SELECT SUBSTR('Good doggy', 6);

Výsledek:

+-------------------------+
| SUBSTR('Good doggy', 6) |
+-------------------------+
| doggy                   |
+-------------------------+

Zde je stejný příklad, ale s použitím standardní syntaxe SQL:

SELECT SUBSTR('Good doggy' FROM 6);

Výsledek:

+-----------------------------+
| SUBSTR('Good doggy' FROM 6) |
+-----------------------------+
| doggy                       |
+-----------------------------+

Délka podřetězce

Zde je příklad, který určuje délku podřetězce k extrahování:

SELECT SUBSTR('Good doggy', 6, 3);

Výsledek:

+----------------------------+
| SUBSTR('Good doggy', 6, 3) |
+----------------------------+
| dog                        |
+----------------------------+

A zde používá standardní syntaxi SQL:

SELECT SUBSTR('Good doggy' FROM 6 FOR 3);

Výsledek:

+-----------------------------------+
| SUBSTR('Good doggy' FROM 6 FOR 3) |
+-----------------------------------+
| dog                               |
+-----------------------------------+

Záporná pozice

Zadání záporné hodnoty pro pozici způsobí, že počáteční pozice bude počítána zpětně od konce řetězce:

SELECT SUBSTR('Good doggy', -5);

Výsledek:

+--------------------------+
| SUBSTR('Good doggy', -5) |
+--------------------------+
| doggy                    |
+--------------------------+

Zápornou pozici lze také použít při použití standardní syntaxe SQL:

SELECT SUBSTR('Good doggy' FROM -5 FOR 3);

Výsledek:

+------------------------------------+
| SUBSTR('Good doggy' FROM -5 FOR 3) |
+------------------------------------+
| dog                                |
+------------------------------------+

V tomto případě jsem také nastavil délku podřetězce.

Režim Oracle

V režimu Oracle je počáteční pozice 0 (nula) se považuje za 1 . Počáteční pozice však 1 je také považováno za 1 .

To je na rozdíl od jiných režimů, kde 0 vrátí prázdný řetězec.

Příklad:

SET SQL_MODE=ORACLE;
SELECT 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Výsledek:

+------------+------------+
| 0          | 1          |
+------------+------------+
| Good doggy | Good doggy |
+------------+------------+

Zde je ve výchozím režimu:

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Výsledek:

+------+------------+
| 0    | 1          |
+------+------------+
|      | Good doggy |
+------+------------+

Nulové argumenty

Pokud jsou některé (nebo všechny) argumenty null , SUBSTR() funkce vrací null :

SELECT 
    SUBSTR(null, 3, 3),
    SUBSTR('Doggy', null, 3),
    SUBSTR('Doggy', 3, null),
    SUBSTR(null, null, null);

Výsledek:

+--------------------+--------------------------+--------------------------+--------------------------+
| SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) |
+--------------------+--------------------------+--------------------------+--------------------------+
| NULL               | NULL                     | NULL                     | NULL                     |
+--------------------+--------------------------+--------------------------+--------------------------+

Chybí argumenty

Volání SUBSTR() bez předání jakýchkoli argumentů dojde k chybě:

SELECT SUBSTR();

Výsledek:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Připojení C# k Oracle

  2. Import oddílů InnoDB v MariaDB 10.0/10.1

  3. Analýza tlaku paměti Rizikový stav

  4. Vytvořte nového uživatele Oracle a udělte oprávnění:Syntaxe a příklady