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