sql >> Database teknologi >  >> RDS >> Mysql

Sådan vælger du alt før/efter en bestemt karakter i MySQL – SUBSTRING_INDEX()

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


  1. Hvorfor får jeg PLS-00302:komponent skal erklæres, når den eksisterer?

  2. Fejl:INSERT EXEC-sætningen kan ikke indlejres. og kan ikke bruge ROLLBACK-sætningen i en INSERT-EXEC-sætning. Hvordan løser man dette?

  3. Leverer hurtigere innovation til MariaDBs fællesskab

  4. Skift PostgreSQL-kolonner, der bruges i visninger