sql >> Database >  >> RDS >> Mysql

Alles selecteren voor/na een bepaald teken in MySQL - SUBSTRING_INDEX()

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


  1. Meerdere sets of arrays van waarden doorgeven aan een functie

  2. Hoe een gekoppelde server MySQL te maken

  3. RoR:kan de_kolom niet wijzigen in postgres, prima in MySQL (MySQL voor ontwikkeling, Postgres op Heroku)

  4. Hoe de activiteit van één database in SQL Server te analyseren