In MariaDB kunt u de SUBSTRING_INDEX()
. gebruiken functie om alles voor of na een bepaald teken (of tekens) in een tekenreeks terug te geven.
Deze functie accepteert drie argumenten; de tekenreeks, het scheidingsteken en het aantal keren dat dat scheidingsteken voorkomt om te bepalen welke subtekenreeks moet worden geretourneerd.
Voorbeelden
We kunnen zien hoe de functie werkt in de volgende voorbeelden.
Selecteer eerst alles
Om alles vóór een bepaald teken te selecteren, maakt u van het derde argument een positieve waarde:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 2);
Resultaat:
Red,Green
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.
Ik heb in dat voorbeeld een komma gebruikt, maar het kan elk teken of elke tekenreeks zijn:
SELECT SUBSTRING_INDEX('Red or Green or Blue', ' or ', 2);
Resultaat:
Red or Green
Selecteer daarna alles
Gebruik een negatieve waarde om alles na een bepaald teken te selecteren:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', -2);
Resultaat:
Green,Blue
Houd er rekening mee dat de negatieve waarde betekent dat deze vanaf rechts wordt ingeteld en vervolgens de subtekenreeks rechts van het scheidingsteken selecteert.
Als het scheidingsteken niet wordt gevonden
Als het scheidingsteken niet in de tekenreeks wordt gevonden, wordt de tekenreeks volledig geretourneerd.
Voorbeeld:
SELECT SUBSTRING_INDEX('Red,Green,Blue', '-', 1);
Resultaat:
Red,Green,Blue
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('Red,Green,Blue', ',', 10);
Resultaat:
Red,Green,Blue
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('Red and green and blue', 'AND', 2);
Resultaat:
Red and green and blue
We krijgen de hele reeks volledig.
Juiste zaak
Hier is hetzelfde voorbeeld, maar waar de zaak overeenkomt:
SELECT SUBSTRING_INDEX('Red and green and blue', 'and', 2);
Resultaat:
Red and green