I MariaDB kan du bruge SUBSTRING_INDEX()
funktion til at returnere alt før eller efter et bestemt tegn (eller tegn) i en streng.
Denne funktion accepterer tre argumenter; strengen, afgrænsningstegnet og antallet af forekomster af det afgrænsningstegn, der skal bruges til at bestemme den understreng, der skal returneres.
Eksempler
Vi kan se, hvordan funktionen fungerer i de følgende eksempler.
Vælg Alt før
For at markere alt før et bestemt tegn, gør det tredje argument til en positiv værdi:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 2);
Resultat:
Red,Green
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.
Jeg brugte et komma i det eksempel, men det kunne have været et hvilket som helst tegn eller streng:
SELECT SUBSTRING_INDEX('Red or Green or Blue', ' or ', 2);
Resultat:
Red or Green
Vælg Alt efter
Brug en negativ værdi til at vælge alt efter et bestemt tegn:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', -2);
Resultat:
Green,Blue
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.
Når afgrænseren ikke findes
Hvis afgrænsningstegnet ikke findes i strengen, returneres strengen i sin helhed.
Eksempel:
SELECT SUBSTRING_INDEX('Red,Green,Blue', '-', 1);
Resultat:
Red,Green,Blue
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('Red,Green,Blue', ',', 10);
Resultat:
Red,Green,Blue
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('Red and green and blue', 'AND', 2);
Resultat:
Red and green and blue
Vi får hele strengen i fuld.
Korrekt sag
Her er det samme eksempel, men hvor sagen matcher:
SELECT SUBSTRING_INDEX('Red and green and blue', 'and', 2);
Resultat:
Red and green