sql >> Database >  >> RDS >> Mysql

3 manieren om de positie van een subtekenreeks binnen een tekenreeks in MySQL te vinden

MySQL heeft een aantal tekenreeksfuncties die de positie van een subtekenreeks binnen een tekenreeks teruggeven. Meer specifiek geven ze de positie van het eerste voorkomen binnen de tekenreeks (of het eerste voorkomen na een bepaald startpunt).

De functies waarnaar ik verwijs zijn als volgt:

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

Hieronder vindt u een overzicht van elk.

INSTR()

De INSTR() functie retourneert het eerste voorkomen van een subtekenreeks binnen een tekenreeks.

Dit is de syntaxis:

INSTR(str,substr)

Waar str is de tekenreeks die u wilt zoeken, en substr is de substring waarnaar u zoekt.

Voorbeeld

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

Resultaat:

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

In dit geval is de string dogs begint op positie 10.

Als de subtekenreeks niet wordt gevonden, een resultaat van 0 wordt geretourneerd:

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

Resultaat:

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

LOCATE()

De LOCATE() functie werkt op een vergelijkbare manier, op een paar verschillen na; de argumenten staan ​​in een andere volgorde en u kunt een optionele derde parameter opgeven om aan te geven waar u moet beginnen met zoeken.

Daarom kunt u het op een van de volgende manieren gebruiken:

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

De eerste syntaxis is net als de INTSR() syntaxis, behalve dat str en substr worden verwisseld.

De tweede syntaxis voegt de optionele pos . toe argument, waarmee u een positie kunt opgeven om te beginnen met zoeken.

Voorbeeld van eerste syntaxis

Hier is een voorbeeld waarin de eerste syntaxis wordt gebruikt:

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

Resultaat:

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

Voorbeeld van tweede syntaxis

Hier is een voorbeeld waarin we een startpositie specificeren om te beginnen met zoeken:

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

Resultaat:

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

We kunnen zien dat de string cat is te vinden op positie 1, maar we hebben 6 specified gespecificeerd als startpositie. Daarom was de positie van het volgende exemplaar van die tekenreeks degene die werd geretourneerd.

Net als bij de INSTR() functie, als de substring niet wordt gevonden, 0 wordt geretourneerd.

POSITIE()

De POSITION() functie is een synoniem voor LOCATE() , maar met een iets andere syntaxis.

Dit is de syntaxis:

POSITION(substr IN str)

Dit is een synoniem voor het volgende:

LOCATE(substr,str)

We zouden dus een van de voorgaande voorbeelden als volgt kunnen herschrijven:

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

Resultaat:

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


  1. Gegoten van VARCHAR naar INT - MySQL

  2. Wat is het equivalent voor LISTAGG (Oracle-database) in PostgreSQL?

  3. LIKE-query op elementen van platte jsonb-array

  4. SQLite DATEADD() Equivalent