sql >> Databasteknik >  >> RDS >> MariaDB

Hur SUBSTRING_INDEX() fungerar i MariaDB

I MariaDB, SUBSTRING_INDEX() är en inbyggd strängfunktion. Den returnerar en delsträng från en sträng före ett visst antal förekomster av den angivna avgränsaren.

SUBSTRING_INDEX() kräver tre argument; strängen, avgränsaren och antalet (dvs. antalet förekomster av den avgränsaren).

Syntax

Syntaxen ser ut så här:

SUBSTRING_INDEX(str,delim,count)

Där str är strängen, delim är avgränsaren och count är antalet förekomster av den avgränsaren som ska användas för att bestämma delsträngen som ska returneras.

Om count är positivt, returneras allt till vänster om den sista avgränsaren (räknat från vänster). Om count är negativ returneras allt till höger om den sista avgränsaren (räknat från höger).

Exempel

Här är ett grundläggande exempel:

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

Resultat:

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

Negativt antal

Att ange ett negativt värde för räkningen gör att det räknas bakåt från slutet av strängen:

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

Resultat:

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

Det gick inte att hitta avgränsare

Om avgränsaren inte finns i strängen, returneras hela strängen:

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

Resultat:

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

Nollargument

Om något (eller alla) av argumenten är null , SUBSTRING_INDEX() funktion returnerar 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";

Resultat:

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

Argument saknas

Anropar SUBSTRING_INDEX() utan att skicka några argument resulterar i ett fel:

SELECT SUBSTRING_INDEX();

Resultat:

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

  1. Att hålla en applikationsdatabas agnostisk (ADO.NET vs inkapslande DB-logik)

  2. Hur man skickar en array till en lagrad SQL Server-procedur

  3. Efter att ha återställt min databasserie borttagen från kolumnen i Postgresql

  4. Inaktivera ONLY_FULL_GROUP_BY