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

Sådan fungerer POSITION()-funktionen i MySQL

I MySQL er POSITION() funktion returnerer positionen for den første forekomst af en understreng i strengen.

Denne funktion er faktisk et synonym for LOCATE() , men med en lidt anden syntaks. LOCATE() Funktionen har også ekstra funktionalitet, idet den giver dig mulighed for at definere en startposition fra din søgning.

Syntaks

Den grundlæggende syntaks lyder sådan her:

POSITION(substr IN str)

Hvor substr er understrengen og str er strengen.

Eksempel 1 – Grundlæggende brug

SELECT POSITION('Cat' IN 'The Cat') Result;

Resultat:

+--------+
| Result |
+--------+
|      5 |
+--------+

Eksempel 2 – Versalfølsomhed

POSITION() funktionen er multibytesikker og skelner kun mellem store og små bogstaver, hvis mindst ét ​​argument er en binær streng.

Så det følgende eksempel skiller ikke mellem store og små bogstaver:

SELECT POSITION('Cat' IN 'The Cat') Result;

Resultat:

+--------+
| Result |
+--------+
|      5 |
+--------+

Eksempel 3 – Ingen match

Funktionen returnerer 0 hvis understrengen ikke findes i strengen:

SELECT POSITION('Dog' IN 'The cat') Result;

Resultat:

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

Eksempel 4 – Indlejrede understrenge

Vær forsigtig, når du vælger understrengen. Hvis det er en del af et andet ord, kan du få en falsk positiv:

SELECT POSITION('Cat' IN 'Good Catch!') Result;

Resultat:

+--------+
| Result |
+--------+
|      6 |
+--------+

Hvis du kun leder efter kat , dyret, ville dette være en falsk positiv.

Eksempel 5 – Kun første gang

Husk, denne funktion returnerer kun positionen for den første forekomst af understrengen. Eventuelle efterfølgende forekomster ignoreres:

SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;

Resultat:

+--------+
| Result |
+--------+
|      4 |
+--------+

Eksempel 6 – NULL-argumenter

Hvis nogen af ​​argumenterne er NULL , resultatet er NULL :

SELECT 
  POSITION('Cat' IN NULL) 'Result 1',
  POSITION(NULL IN 'The Cat') 'Result 2';

Resultat:

+----------+----------+
| Result 1 | Result 2 |
+----------+----------+
|     NULL |     NULL |
+----------+----------+

Som nævnt kan du også bruge LOCATE() funktion, som giver dig mulighed for at definere en startposition for din søgning.


  1. SQLite - Opret en database

  2. MariaDB JSON_VALUE() vs JSON_QUERY():Hvad er forskellen?

  3. 4 måder at adskille timer, minutter og sekunder fra en tidsværdi i MariaDB

  4. Hvordan EXTRACT() virker i MariaDB