sql >> Databasteknik >  >> RDS >> Mysql

Hur man väljer allt före/efter en viss karaktär i MySQL – SUBSTRING_INDEX()

Du kan använda MySQL SUBSTRING_INDEX() funktion för att returnera allt före eller efter ett visst tecken (eller tecken) i en sträng.

Den här funktionen låter dig ange vilken avgränsare som ska användas och du kan ange vilken (i händelse av att det finns mer än en i strängen).

Syntax

Här är syntaxen:

SUBSTRING_INDEX(str,delim,count)

Där str är strängen, delim är avgränsaren (från vilken du vill ha en delsträng till vänster eller höger om), och count anger vilken avgränsare (om det finns flera förekomster av avgränsaren i strängen).

Observera att avgränsaren kan vara ett enda tecken eller flera tecken.

Exempel 1 – Välj allt till vänster

För att välja allt före ett visst tecken, använd ett positivt värde:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);

Resultat:

Cats,Dogs

I det här exemplet markerar vi allt före det andra kommatecken. Detta görs med hjälp av ett kommatecken (, ) som avgränsare och 2 som räkning.

Exempel 2 – Välj allt till höger

För att välja allt efter ett visst tecken måste du använda ett negativt värde:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);

Resultat:

Dogs,Rabbits

Observera att det negativa värdet betyder att det räknas in från höger, välj sedan delsträngen till höger om avgränsaren.

Vad händer om avgränsaren inte matchar?

Om avgränsaren inte finns i strängen, returneras strängen helt enkelt.

Exempel:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);

Resultat:

Cats,Dogs,Rabbits

I det här fallet returneras hela strängen i sin helhet eftersom vi använde ett bindestreck (- ) som avgränsare men det fanns inga bindestreck i strängen.

Vi skulle få samma resultat om strängen gör det innehåller avgränsaren, men vårt count överskrider antalet avgränsare i strängen.

Exempel:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);

Resultat:

Cats,Dogs,Rabbits

Skiftlägeskänslighet

SUBSTRING_INDEX() funktionen utför en skiftlägeskänslig sökning efter avgränsaren. Det vill säga att avgränsaren måste vara rätt skiftläge innan den matchar.

Felaktigt fall

Här är ett exempel där fallet inte matchar:

SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);

Resultat:

Cats and Dogs and Rabbits

Vi får hela strängen i sin helhet.

Rätt fall

Här är samma exempel, men där fallet matchar:

SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);

Resultat:

Cats and Dogs


  1. Hur sparar man Unicode-data till Oracle?

  2. Är det möjligt att använda retur i lagrat förfarande?

  3. Postgres sql infoga frågesyntaxfel från phpPgAdmin

  4. Postgres:Distinkt men bara för en kolumn