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 | +--------+