sql >> Database >  >> RDS >> MariaDB

Hoe SUBSTRING() werkt in MariaDB

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

  1. Een offline app voor internationalisering maken:gebruik Sqlite-database

  2. Trucs voor continue verbetering van databasebewaking

  3. Rails 3.1:Postgres opvragen voor records binnen een tijdsbereik

  4. Top 5 tijdrovende SQL-query's in Oracle