In MariaDB, SUBSTRING()
is een ingebouwde tekenreeksfunctie die een subtekenreeks van een gegeven tekenreeks retourneert.
SUBSTRING()
vereist ten minste twee argumenten; de tekenreeks en de positie waarvan de subtekenreeks moet worden geëxtraheerd. Het accepteert ook een optioneel derde argument waarmee je kunt specificeren hoe lang de substring moet zijn.
Syntaxis
De syntaxis heeft de volgende vormen:
SUBSTRING(str,pos),
SUBSTRING(str FROM pos),
SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)
Waar str
is de string, pos
is de startpositie van de substring, en len
is het aantal tekens dat moet worden geëxtraheerd.
De twee formulieren die de FROM
. gebruiken trefwoord zijn standaard SQL-syntaxis.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT SUBSTRING('Big fat cat', 5);
Resultaat:
+-----------------------------+ | SUBSTRING('Big fat cat', 5) | +-----------------------------+ | fat cat | +-----------------------------+
Hier is hetzelfde voorbeeld, maar met gebruik van de standaard SQL-syntaxis:
SELECT SUBSTRING('Big fat cat' FROM 5);
Resultaat:
+---------------------------------+ | SUBSTRING('Big fat cat' FROM 5) | +---------------------------------+ | fat cat | +---------------------------------+
Lengte subtekenreeks
Hier is een voorbeeld dat de lengte specificeert van de substring die moet worden geëxtraheerd:
SELECT SUBSTRING('Big fat cat', 5, 3);
Resultaat:
+--------------------------------+ | SUBSTRING('Big fat cat', 5, 3) | +--------------------------------+ | fat | +--------------------------------+
En hier gebruikt het de standaard SQL-syntaxis:
SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);
Resultaat:
+---------------------------------------+ | SUBSTRING('Big fat cat' FROM 5 FOR 3) | +---------------------------------------+ | fat | +---------------------------------------+
Negatieve positie
Door een negatieve waarde voor de positie op te geven, wordt de startpositie teruggeteld vanaf het einde van de tekenreeks:
SELECT SUBSTRING('Big fat cat', -3);
Resultaat:
+------------------------------+ | SUBSTRING('Big fat cat', -3) | +------------------------------+ | cat | +------------------------------+
Een negatieve positie kan ook worden gebruikt bij gebruik van de standaard SQL-syntaxis:
SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);
Resultaat:
+----------------------------------------+ | SUBSTRING('Big fat cat' FROM -7 FOR 3) | +----------------------------------------+ | fat | +----------------------------------------+
In dit geval stel ik ook een lengte in voor de substring.
Oracle-modus
In Oracle-modus, een startpositie van 0
(nul) wordt behandeld als 1
. Echter, een startpositie van 1
wordt ook behandeld als 1
.
Dit in tegenstelling tot andere modi, waar 0
zal een lege string teruggeven.
Voorbeeld:
SET SQL_MODE=ORACLE;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1";
Resultaat:
+-------------+-------------+ | 0 | 1 | +-------------+-------------+ | Big fat cat | Big fat cat | +-------------+-------------+
Hier is het in de standaardmodus:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1";
Resultaat:
+------+-------------+ | 0 | 1 | +------+-------------+ | | Big fat cat | +------+-------------+
Nullargumenten
Als een (of alle) argumenten null
. zijn , de SUBSTRING()
functie retourneert null
:
SELECT
SUBSTRING(null, 3, 3),
SUBSTRING('Coffee', null, 3),
SUBSTRING('Coffee', 3, null),
SUBSTRING(null, null, null);
Resultaat:
+-----------------------+------------------------------+------------------------------+-----------------------------+ | SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) | +-----------------------+------------------------------+------------------------------+-----------------------------+ | NULL | NULL | NULL | NULL | +-----------------------+------------------------------+------------------------------+-----------------------------+
Ontbrekende argumenten
SUBSTRING()
. aanroepen zonder het doorgeven van argumenten resulteert in een fout:
SELECT SUBSTRING();
Resultaat:
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