sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB SUBSTR() Forklaret

I MariaDB, SUBSTR() er et synonym for SUBSTRING() .

Det er en indbygget strengfunktion, der returnerer en understreng fra en given streng.

Det kræver mindst to argumenter; strengen og den position, som understrengen skal udtrækkes fra. Den accepterer også et valgfrit tredje argument, der giver dig mulighed for at angive, hvor lang understrengen skal være.

Syntaks

Syntaksen har følgende former:

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

Hvor str er strengen, pos er startpositionen for understrengen, og len er antallet af tegn, der skal udtrækkes.

De to formularer, der bruger FROM nøgleord er standard SQL-syntaks.

Eksempel

Her er et grundlæggende eksempel:

SELECT SUBSTR('Good doggy', 6);

Resultat:

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

Her er det samme eksempel, men ved at bruge standard SQL-syntaks:

SELECT SUBSTR('Good doggy' FROM 6);

Resultat:

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

Længde af understreng

Her er et eksempel, der angiver længden af ​​den understreng, der skal udtrækkes:

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

Resultat:

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

Og her bruger den standard SQL-syntaks:

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

Resultat:

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

Negativ position

Angivelse af en negativ værdi for positionen bevirker, at startpositionen tælles baglæns fra slutningen af ​​strengen:

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

Resultat:

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

En negativ position kan også bruges ved brug af standard SQL-syntaks:

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

Resultat:

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

I dette tilfælde indstiller jeg også en længde for understrengen.

Oracle-tilstand

Når du er i Oracle-tilstand, en startposition på 0 (nul) behandles som 1 . Men en startposition på 1 behandles også som 1 .

Dette er i modsætning til andre tilstande, hvor 0 returnerer en tom streng.

Eksempel:

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

Resultat:

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

Her er den i standardtilstand:

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

Resultat:

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

Nul-argumenter

Hvis nogen (eller alle) af argumenterne er null , SUBSTR() funktion returnerer null :

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

Resultat:

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

Manglende argumenter

Kalder SUBSTR() uden at sende nogen argumenter resulterer det i en fejl:

SELECT SUBSTR();

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. Få feltværdien med en markør

  2. Rækkefølgen af ​​en SQL Select-sætning uden Order By-sætning

  3. MariaDB Backup &PostgreSQL i skyen - ClusterControl Release 1.6.1

  4. Hvordan kan jeg vælge fra liste over værdier i SQL Server