sql >> Databasteknik >  >> RDS >> MariaDB

Hur SUBSTRING() fungerar i MariaDB

I MariaDB, SUBSTRING() är en inbyggd strängfunktion som returnerar en delsträng från en given sträng.

SUBSTRING() kräver minst två argument; strängen och den position som understrängen ska extraheras från. Den accepterar också ett valfritt tredje argument som låter dig specificera hur lång delsträngen ska vara.

Syntax

Syntaxen har följande former:

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

Där str är strängen, pos är startpositionen för delsträngen och len är antalet tecken som ska extraheras.

De två formulären som använder FROM nyckelord är standard SQL-syntax.

Exempel

Här är ett grundläggande exempel:

SELECT SUBSTRING('Big fat cat', 5);

Resultat:

+-----------------------------+
| SUBSTRING('Big fat cat', 5) |
+-----------------------------+
| fat cat                     |
+-----------------------------+

Här är samma exempel, men med standard SQL-syntax:

SELECT SUBSTRING('Big fat cat' FROM 5);

Resultat:

+---------------------------------+
| SUBSTRING('Big fat cat' FROM 5) |
+---------------------------------+
| fat cat                         |
+---------------------------------+

Längd på delsträng

Här är ett exempel som anger längden på delsträngen som ska extraheras:

SELECT SUBSTRING('Big fat cat', 5, 3);

Resultat:

+--------------------------------+
| SUBSTRING('Big fat cat', 5, 3) |
+--------------------------------+
| fat                            |
+--------------------------------+

Och här använder den standard SQL-syntax:

SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);

Resultat:

+---------------------------------------+
| SUBSTRING('Big fat cat' FROM 5 FOR 3) |
+---------------------------------------+
| fat                                   |
+---------------------------------------+

Negativ position

Att ange ett negativt värde för positionen gör att startpositionen räknas bakåt från slutet av strängen:

SELECT SUBSTRING('Big fat cat', -3);

Resultat:

+------------------------------+
| SUBSTRING('Big fat cat', -3) |
+------------------------------+
| cat                          |
+------------------------------+

En negativ position kan också användas när du använder standard SQL-syntax:

SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);

Resultat:

+----------------------------------------+
| SUBSTRING('Big fat cat' FROM -7 FOR 3) |
+----------------------------------------+
| fat                                    |
+----------------------------------------+

I det här fallet ställer jag också in en längd för delsträngen.

Oracle Mode

I Oracle-läge, startpositionen 0 (noll) behandlas som 1 . Däremot en startposition på 1 behandlas också som 1 .

Detta är i motsats till andra lägen, där 0 returnerar en tom sträng.

Exempel:

SET SQL_MODE=ORACLE;
SELECT 
    SUBSTRING('Big fat cat', 0) AS "0",
    SUBSTRING('Big fat cat', 1) AS "1";

Resultat:

+-------------+-------------+
| 0           | 1           |
+-------------+-------------+
| Big fat cat | Big fat cat |
+-------------+-------------+

Här är den i standardläge:

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTRING('Big fat cat', 0) AS "0",
    SUBSTRING('Big fat cat', 1) AS "1";

Resultat:

+------+-------------+
| 0    | 1           |
+------+-------------+
|      | Big fat cat |
+------+-------------+

Nollargument

Om något (eller alla) av argumenten är null , SUBSTRING() funktion returnerar null :

SELECT 
    SUBSTRING(null, 3, 3),
    SUBSTRING('Coffee', null, 3),
    SUBSTRING('Coffee', 3, null),
    SUBSTRING(null, null, null);

Resultat:

+-----------------------+------------------------------+------------------------------+-----------------------------+
| SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) |
+-----------------------+------------------------------+------------------------------+-----------------------------+
| NULL                  | NULL                         | NULL                         | NULL                        |
+-----------------------+------------------------------+------------------------------+-----------------------------+

Argument saknas

Anropar SUBSTRING() utan att skicka några argument resulterar i ett fel:

SELECT SUBSTRING();

Resultat:

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. Anonymisering av indirekta identifierare för att minska risken för åter-ID

  2. Hur man definierar en primärnyckel för automatisk ökning i Oracle

  3. TOP 5 MySQL Ta bort syntax med tips för T-SQL-utvecklare

  4. Skapa en databas i molnwebbplatser