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

3 måder at finde positionen af ​​en understreng i en streng i MySQL

MySQL har en række strengfunktioner, der returnerer positionen af ​​en understreng i en streng. Mere specifikt returnerer de positionen for den første forekomst i strengen (eller den første forekomst efter et givet startpunkt).

De funktioner, jeg henviser til, er som følger:

  • INSTR()
  • LOCATE()
  • POSITION()

Nedenfor er en oversigt over hver enkelt.

INSTR()

INSTR() funktion returnerer den første forekomst af en understreng i en streng.

Her er syntaksen:

INSTR(str,substr)

Hvor str er den streng, du vil søge efter, og substr er den understreng, du søger efter.

Eksempel

SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;

Resultat:

+--------+
| Result |
+--------+
|     10 |
+--------+

I dette tilfælde er strengen dogs starter ved position 10.

Hvis understrengen ikke findes, er resultatet 0 returneres:

SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;

Resultat:

+--------+
| Result |
+--------+
|      0 |
+--------+

LOCATE()

LOCATE() funktion fungerer på samme måde, bortset fra et par forskelle; argumenterne er i en anden rækkefølge, og du kan angive en valgfri tredje parameter for at angive, hvor du skal begynde at søge.

Derfor kan du bruge det på en af ​​følgende måder:

LOCATE(substr,str)
LOCATE(substr,str,pos)

Den første syntaks er ligesom INTSR() syntaks, bortset fra at str og substr er byttet rundt.

Den anden syntaks tilføjer den valgfri pos argument, som giver dig mulighed for at angive en position for at begynde at søge.

Eksempel på første syntaks

Her er et eksempel, der bruger den første syntaks:

SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;

Resultat:

+--------+
| Result |
+--------+
|     10 |
+--------+

Eksempel på anden syntaks

Her er et eksempel, hvor vi angiver en startposition for at begynde at søge:

SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;

Resultat:

+--------+
| Result |
+--------+
|      7 |
+--------+

Vi kan se, at strengen cat kan findes på position 1, men vi specificerede 6 som udgangsposition. Derfor var positionen for den næste forekomst af den streng den, der blev returneret.

Som med INSTR() funktion, hvis understrengen ikke findes, 0 er returneret.

POSITION()

POSITION() funktion er et synonym for LOCATE() , men med en lidt anden syntaks.

Her er syntaksen:

POSITION(substr IN str)

Dette er et synonym for følgende:

LOCATE(substr,str)

Så vi kunne omskrive et af de foregående eksempler som følger:

SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;

Resultat:

+--------+
| Result |
+--------+
|     10 |
+--------+


  1. SQL-forespørgsel til at vælge datoer mellem to datoer

  2. Hvordan tæller man antallet af forekomster af en bestemt understreng i en SQL-varchar?

  3. SQL*Plus udfører ikke SQL-scripts, som SQL Developer gør

  4. Automatisering af Barman med Puppet:it2ndq/barman (del 1)