In MariaDB, SUBSTR()
is een synoniem voor SUBSTRING()
.
Het is een ingebouwde tekenreeksfunctie die een subtekenreeks van een bepaalde tekenreeks retourneert.
Het 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:
SUBSTR(str,pos),
SUBSTR(str FROM pos),
SUBSTR(str,pos,len),
SUBSTR(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 SUBSTR('Good doggy', 6);
Resultaat:
+-------------------------+ | SUBSTR('Good doggy', 6) | +-------------------------+ | doggy | +-------------------------+
Hier is hetzelfde voorbeeld, maar met gebruik van de standaard SQL-syntaxis:
SELECT SUBSTR('Good doggy' FROM 6);
Resultaat:
+-----------------------------+ | SUBSTR('Good doggy' FROM 6) | +-----------------------------+ | doggy | +-----------------------------+
Subtekenreekslengte
Hier is een voorbeeld dat de lengte specificeert van de substring die moet worden geëxtraheerd:
SELECT SUBSTR('Good doggy', 6, 3);
Resultaat:
+----------------------------+ | SUBSTR('Good doggy', 6, 3) | +----------------------------+ | dog | +----------------------------+
En hier gebruikt het de standaard SQL-syntaxis:
SELECT SUBSTR('Good doggy' FROM 6 FOR 3);
Resultaat:
+-----------------------------------+ | SUBSTR('Good doggy' FROM 6 FOR 3) | +-----------------------------------+ | dog | +-----------------------------------+
Negatieve positie
Door een negatieve waarde voor de positie op te geven, wordt de startpositie teruggeteld vanaf het einde van de tekenreeks:
SELECT SUBSTR('Good doggy', -5);
Resultaat:
+--------------------------+ | SUBSTR('Good doggy', -5) | +--------------------------+ | doggy | +--------------------------+
Een negatieve positie kan ook worden gebruikt bij gebruik van de standaard SQL-syntaxis:
SELECT SUBSTR('Good doggy' FROM -5 FOR 3);
Resultaat:
+------------------------------------+ | SUBSTR('Good doggy' FROM -5 FOR 3) | +------------------------------------+ | dog | +------------------------------------+
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
SUBSTR('Good doggy', 0) AS "0",
SUBSTR('Good doggy', 1) AS "1";
Resultaat:
+------------+------------+ | 0 | 1 | +------------+------------+ | Good doggy | Good doggy | +------------+------------+
Hier is het in de standaardmodus:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTR('Good doggy', 0) AS "0",
SUBSTR('Good doggy', 1) AS "1";
Resultaat:
+------+------------+ | 0 | 1 | +------+------------+ | | Good doggy | +------+------------+
Nullargumenten
Als een (of alle) argumenten null
. zijn , de SUBSTR()
functie retourneert null
:
SELECT
SUBSTR(null, 3, 3),
SUBSTR('Doggy', null, 3),
SUBSTR('Doggy', 3, null),
SUBSTR(null, null, null);
Resultaat:
+--------------------+--------------------------+--------------------------+--------------------------+ | SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) | +--------------------+--------------------------+--------------------------+--------------------------+ | NULL | NULL | NULL | NULL | +--------------------+--------------------------+--------------------------+--------------------------+
Ontbrekende argumenten
SUBSTR()
. aanroepen zonder het doorgeven van argumenten resulteert in een fout:
SELECT SUBSTR();
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