Du kan bruge MySQL SUBSTRING_INDEX()
funktion til at returnere alt før eller efter et bestemt tegn (eller tegn) i en streng.
Denne funktion giver dig mulighed for at angive den afgrænsning, der skal bruges, og du kan angive hvilken (i tilfælde af, at der er mere end én i strengen).
Syntaks
Her er syntaksen:
SUBSTRING_INDEX(str,delim,count)
Hvor str
er strengen, delim
er afgrænsningstegnet (hvorfra du ønsker en understreng til venstre eller højre for), og count
specificerer hvilket skilletegn (i tilfælde af, at der er flere forekomster af afgrænsningstegnet i strengen).
Bemærk, at afgrænsningstegnet kan være et enkelt tegn eller flere tegn.
Eksempel 1 – Vælg Alt til venstre
At vælge alt før et bestemt tegn, brug en positiv værdi:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);
Resultat:
Cats,Dogs
I dette eksempel markerer vi alt før det andet komma. Dette gøres ved at bruge et komma (,
) som skilletegn og 2
som tæller.
Eksempel 2 – Vælg Alt til højre
For at vælge alt efter et bestemt tegn, skal du bruge en negativ værdi:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);
Resultat:
Dogs,Rabbits
Bemærk, at den negative værdi betyder, at den tæller ind fra højre, og vælg derefter understrengen til højre for afgrænsningstegnet.
Hvad hvis afgrænsningen ikke matcher?
Hvis afgrænsningstegnet ikke findes i strengen, returneres strengen blot i sin helhed.
Eksempel:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);
Resultat:
Cats,Dogs,Rabbits
I dette tilfælde returneres hele strengen i sin helhed, fordi vi brugte en bindestreg (-
) som skilletegn, men der var ingen bindestreger i strengen.
Vi ville få det samme resultat, hvis strengen gør det indeholde afgrænsningstegnet, men vores count
overskrider antallet af skilletegn i strengen.
Eksempel:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);
Resultat:
Cats,Dogs,Rabbits
Skabsfølsomhed
SUBSTRING_INDEX()
funktionen udfører en søgning, der skelner mellem store og små bogstaver, efter afgrænsningstegnet. Det vil sige, at afgrænsningstegnet skal være det rigtige store og små bogstaver, før det matcher.
Forkert sag
Her er et eksempel, hvor sagen ikke stemmer overens:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);
Resultat:
Cats and Dogs and Rabbits
Vi får hele strengen i fuld.
Korrekt sag
Her er det samme eksempel, men hvor sagen matcher:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);
Resultat:
Cats and Dogs