I MariaDB, POSITION() er en indbygget strengfunktion, der returnerer positionen for den første forekomst af en understreng i en anden streng. Det er en del af ODBC 3.0.
POSITION(substr IN str) er et synonym for LOCATE(substr,str) .
POSITION() ligner også INSTR() funktion, bortset fra at POSITION() bruger IN syntaks, og at argumentrækkefølgen er vendt mellem disse to funktioner.
Syntaks
Syntaksen ser sådan ud:
POSITION(substr IN str)
Hvor str er strengen, og substr er den understreng, som positionen skal returneres for.
Eksempel
Her er et grundlæggende eksempel:
SELECT POSITION('cute' IN 'My cute dog'); Resultat:
+-----------------------------------+
| POSITION('cute' IN 'My cute dog') |
+-----------------------------------+
| 4 |
+-----------------------------------+ Skrivar og bogstaver
POSITION() udfører en søgning uden store og små bogstaver:
SELECT POSITION('CUTE' IN 'My cute dog'); Resultat:
+-----------------------------------+
| POSITION('CUTE' IN 'My cute dog') |
+-----------------------------------+
| 4 |
+-----------------------------------+ Flere forekomster
Hvis understrengen forekommer mere end én gang, returneres kun positionen for den første (fra startpositionen):
SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!'); Resultat:
+--------------------------------------------------+
| POSITION('cute' IN 'My cute dog is SOOOO cute!') |
+--------------------------------------------------+
| 4 |
+--------------------------------------------------+ Delvis match
Hvis understrengen er en del af et større ord, er det stadig et match:
SELECT POSITION('dog' IN 'My doggy is SOOO cute!'); Resultat:
+---------------------------------------------+
| POSITION('dog' IN 'My doggy is SOOO cute!') |
+---------------------------------------------+
| 4 |
+---------------------------------------------+ Men hvis strengen kun er en del af understrengen, er den ikke et match:
SELECT POSITION('doggy' IN 'My dog is SOOO cute!'); Resultat:
+---------------------------------------------+
| POSITION('doggy' IN 'My dog is SOOO cute!') |
+---------------------------------------------+
| 0 |
+---------------------------------------------+ Mellemrum
Mellemrumstegnet er stadig en streng, så vi kan inkludere mellemrum i understrengen, selvom det er det eneste tegn:
SELECT POSITION(' ' IN 'My dog'); Resultat:
+---------------------------+
| POSITION(' ' IN 'My dog') |
+---------------------------+
| 3 |
+---------------------------+ Tøm streng
Her er, hvad der sker, når understrengen er en tom streng:
SELECT POSITION('' IN 'My dog'); Resultat:
+--------------------------+
| POSITION('' IN 'My dog') |
+--------------------------+
| 1 |
+--------------------------+ Ingen match
Hvis understrengen ikke findes i strengen, POSITION() returnerer 0 :
SELECT position('cat' IN 'My dog'); Resultat:
+-----------------------------+
| position('cat' IN 'My dog') |
+-----------------------------+
| 0 |
+-----------------------------+ Nul-argumenter
Giver null for ethvert af argumenterne resulterer i null :
SELECT
POSITION(null IN 'My dog'),
POSITION('dog' IN null); Resultat:
+----------------------------+-------------------------+
| POSITION(null IN 'My dog') | POSITION('dog' IN null) |
+----------------------------+-------------------------+
| NULL | NULL |
+----------------------------+-------------------------+ Angivelse af det forkerte antal argumenter
Kalder POSITION() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT POSITION('dog'); Resultat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1