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

Hvordan MID() virker i MariaDB

I MariaDB, MID() er et synonym for SUBSTRING() . Det returnerer en understreng fra en given streng.

Ifølge MariaDB-dokumentationen er det et synonym for SUBSTRING(str,pos,len) syntaks for SUBSTRING() Men mine test viser, at det virker med alle de forskellige former.

Syntaks

Ifølge MariaDB-dokumentationen går syntaksen sådan her:

MID(str,pos,len)

Jeg har dog fundet ud af, at det virker med følgende formularer (som er de samme former som SUBSTRING() understøtter):

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

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

Eksempel

Her er et grundlæggende eksempel:

SELECT MID('Drink your beer', 7);

Resultat:

+---------------------------+
| MID('Drink your beer', 7) |
+---------------------------+
| your beer                 |
+---------------------------+

Her er det samme eksempel, men ved at bruge FROM syntaks:

SELECT MID('Drink your beer' FROM 7);

Resultat:

+-------------------------------+
| MID('Drink your beer' FROM 7) |
+-------------------------------+
| your beer                     |
+-------------------------------+

Længde af understreng

Her er et eksempel, der specificerer længden af ​​den understreng, der skal udtrækkes. Dette er den eneste syntaks, som MariaDB-dokumentationen citerer for MID() funktion.

SELECT MID('Drink your beer', 7, 4);

Resultat:

+------------------------------+
| MID('Drink your beer', 7, 4) |
+------------------------------+
| your                         |
+------------------------------+

Og her bruger den FROM...FOR syntaks:

SELECT MID('Drink your beer' FROM 7 FOR 4);

Resultat:

+-------------------------------------+
| MID('Drink your beer' FROM 7 FOR 4) |
+-------------------------------------+
| your                                |
+-------------------------------------+

Negativ position

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

SELECT MID('Drink your beer', -9);

Resultat:

+----------------------------+
| MID('Drink your beer', -9) |
+----------------------------+
| your beer                  |
+----------------------------+

En negativ position kan også bruges, når du bruger FROM syntaks:

SELECT MID('Drink your beer' FROM -9 FOR 4);

Resultat:

+--------------------------------------+
| MID('Drink your beer' FROM -9 FOR 4) |
+--------------------------------------+
| your                                 |
+--------------------------------------+

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 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Resultat:

+-----------------+-----------------+
| 0               | 1               |
+-----------------+-----------------+
| Drink your beer | Drink your beer |
+-----------------+-----------------+

Her er den i standardtilstand:

SET SQL_MODE=DEFAULT;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Resultat:

+------+-----------------+
| 0    | 1               |
+------+-----------------+
|      | Drink your beer |
+------+-----------------+

Nul-argumenter

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

SELECT 
    MID(null, 3, 3),
    MID('Beer', null, 3),
    MID('Beer', 3, null),
    MID(null, null, null);

Resultat:

+-----------------+----------------------+----------------------+-----------------------+
| MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) |
+-----------------+----------------------+----------------------+-----------------------+
| NULL            | NULL                 | NULL                 | NULL                  |
+-----------------+----------------------+----------------------+-----------------------+

Manglende argumenter

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

SELECT MID();

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. Venstre polstring i SQL Server – 3 LPAD()-ækvivalenter

  2. Fejlfinding Ulovlig blanding af sorteringsfejl i mysql

  3. Forskellige planer for identiske servere

  4. FORALL erklæring med VALUES-OF bundet klausul i Oracle-databasen