sql >> Database >  >> RDS >> MariaDB

MariaDB SUBSTR() uitgelegd

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

  1. Sorteer op volgorde van waarden in een select-instructie in clausule in mysql

  2. geen ocijdbc9 in java.library.path

  3. Hoe MapReduce werkt in Hadoop

  4. SQLite-trigger