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