sql >> Database teknologi >  >> RDS >> MariaDB

Vælg alt før eller efter en bestemt karakter i MariaDB

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

  1. Hvordan redigerer jeg en tabel for at aktivere CASCADE DELETE?

  2. Fejlkode:1215. Kan ikke tilføje fremmednøglebegrænsning (fremmednøgler)

  3. Aktivitet og baggrundstjeneste Adgang til SQLite-database

  4. Laravel 5.2 - Brug en streng som en tilpasset primær nøgle til veltalende tabel bliver 0