U kunt de MySQL SUBSTRING_INDEX()
. gebruiken functie om alles voor of na een bepaald teken (of tekens) in een tekenreeks terug te geven.
Met deze functie kunt u het scheidingsteken specificeren dat moet worden gebruikt, en u kunt specificeren welke (in het geval dat er meer dan één in de tekenreeks is).
Syntaxis
Dit is de syntaxis:
SUBSTRING_INDEX(str,delim,count)
Waar str
is de string, delim
is het scheidingsteken (waarvan je een subtekenreeks links of rechts van wilt hebben), en count
specificeert welk scheidingsteken (in het geval dat het scheidingsteken meerdere keren voorkomt in de tekenreeks).
Houd er rekening mee dat het scheidingsteken een enkel teken of meerdere tekens kan zijn.
Voorbeeld 1 – Alles links selecteren
Alles selecteren voor een bepaald teken, gebruik dan een positieve waarde:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);
Resultaat:
Cats,Dogs
In dit voorbeeld selecteren we alles vóór de tweede komma. Dit wordt gedaan door een komma te gebruiken (,
) als scheidingsteken, en 2
als de telling.
Voorbeeld 2 – Alles rechts selecteren
Alles selecteren na een bepaald teken, moet u een negatieve waarde gebruiken:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);
Resultaat:
Dogs,Rabbits
Houd er rekening mee dat de negatieve waarde betekent dat deze vanaf rechts wordt ingeteld en vervolgens de subtekenreeks rechts van het scheidingsteken selecteert.
Wat als het scheidingsteken niet overeenkomt?
Als het scheidingsteken niet in de tekenreeks wordt gevonden, wordt de tekenreeks gewoon volledig geretourneerd.
Voorbeeld:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);
Resultaat:
Cats,Dogs,Rabbits
In dit geval wordt de hele tekenreeks volledig geretourneerd omdat we een koppelteken hebben gebruikt (-
) als scheidingsteken, maar er waren geen koppeltekens in de tekenreeks.
We zouden hetzelfde resultaat krijgen als de string doet het scheidingsteken bevatten, maar onze count
overschrijdt het aantal scheidingstekens in de tekenreeks.
Voorbeeld:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);
Resultaat:
Cats,Dogs,Rabbits
Hoofdlettergevoeligheid
De SUBSTRING_INDEX()
functie voert een hoofdlettergevoelige zoekopdracht uit naar het scheidingsteken. Dat wil zeggen, het scheidingsteken moet het juiste hoofdlettergebruik zijn voordat het overeenkomt.
Onjuiste hoofdletters
Hier is een voorbeeld waarbij de zaak niet overeenkomt:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);
Resultaat:
Cats and Dogs and Rabbits
We krijgen de hele reeks volledig.
Juiste zaak
Hier is hetzelfde voorbeeld, maar waar de zaak overeenkomt:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);
Resultaat:
Cats and Dogs