sql >> Database >  >> RDS >> MariaDB

Hoe SUBSTRING_INDEX() werkt in MariaDB

In MariaDB, SUBSTRING_INDEX() is een ingebouwde tekenreeksfunctie. Het retourneert een subtekenreeks van een tekenreeks vóór een bepaald aantal keren dat het opgegeven scheidingsteken voorkomt.

SUBSTRING_INDEX() vereist op drie argumenten; de tekenreeks, het scheidingsteken en het aantal (d.w.z. het aantal keren dat dat scheidingsteken voorkomt).

Syntaxis

De syntaxis gaat als volgt:

SUBSTRING_INDEX(str,delim,count)

Waar str is de string, delim is het scheidingsteken, en count is het aantal keren dat dat scheidingsteken moet worden gebruikt voor het bepalen van de subtekenreeks die moet worden geretourneerd.

Als count positief is, wordt alles links van het laatste scheidingsteken (vanaf links geteld) geretourneerd. Als count negatief is, wordt alles rechts van het laatste scheidingsteken (vanaf rechts geteld) geretourneerd.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3);

Resultaat:

+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) |
+-------------------------------------------------------+
| /users/homer                                          |
+-------------------------------------------------------+

Negatieve telling

Als u een negatieve waarde voor de telling opgeeft, wordt deze achteruit geteld vanaf het einde van de tekenreeks:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3);

Resultaat:

+--------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) |
+--------------------------------------------------------+
| homer/docs/cat_vids                                    |
+--------------------------------------------------------+

Scheidingsteken niet gevonden

Als het scheidingsteken niet in de tekenreeks voorkomt, wordt de hele tekenreeks geretourneerd:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3);

Resultaat:

+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) |
+-------------------------------------------------------+
| /users/homer/docs/cat_vids                            |
+-------------------------------------------------------+

Nullargumenten

Als een (of alle) argumenten null . zijn , de SUBSTRING_INDEX() functie retourneert null :

SELECT 
    SUBSTRING_INDEX(null, '/', 3) AS "1",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', null, 3) AS "2",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', null) AS "3",
    SUBSTRING_INDEX(null, null, null) AS "4";

Resultaat:

+------+------+------+------+
| 1    | 2    | 3    | 4    |
+------+------+------+------+
| NULL | NULL | NULL | NULL |
+------+------+------+------+

Ontbrekende argumenten

Aanroepen van SUBSTRING_INDEX() zonder het doorgeven van argumenten resulteert in een fout:

SELECT SUBSTRING_INDEX();

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'

  1. Hoe de functie JulianDay() werkt in SQLite

  2. SQLiteException:onbekende database

  3. Log DBMS_OUTPUT.Put_Line-uitvoer in tabel in Oracle met DBMS_OUTPUT.Get_Lines

  4. Hoe UPDATE en SELECT tegelijkertijd