I MariaDB, POSITION() är en inbyggd strängfunktion som returnerar positionen för den första förekomsten av en delsträng i en annan sträng. Det är en del av ODBC 3.0.
POSITION(substr IN str) är en synonym för LOCATE(substr,str) .
POSITION() liknar också INSTR() funktion, förutom att POSITION() använder IN syntax, och att argumentordningen är omvänd mellan dessa två funktioner.
Syntax
Syntaxen ser ut så här:
POSITION(substr IN str)
Där str är strängen och substr är delsträngen för vilken positionen ska returneras.
Exempel
Här är ett grundläggande exempel:
SELECT POSITION('cute' IN 'My cute dog'); Resultat:
+-----------------------------------+
| POSITION('cute' IN 'My cute dog') |
+-----------------------------------+
| 4 |
+-----------------------------------+ Skaftkänslighet
POSITION() utför en skiftlägesokänslig sökning:
SELECT POSITION('CUTE' IN 'My cute dog'); Resultat:
+-----------------------------------+
| POSITION('CUTE' IN 'My cute dog') |
+-----------------------------------+
| 4 |
+-----------------------------------+ Flera förekomster
Om delsträngen förekommer mer än en gång, returneras endast positionen för den första (från startpositionen):
SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!'); Resultat:
+--------------------------------------------------+
| POSITION('cute' IN 'My cute dog is SOOOO cute!') |
+--------------------------------------------------+
| 4 |
+--------------------------------------------------+ Delvis matchning
Om delsträngen är en del av ett större ord, är det fortfarande en matchning:
SELECT POSITION('dog' IN 'My doggy is SOOO cute!'); Resultat:
+---------------------------------------------+
| POSITION('dog' IN 'My doggy is SOOO cute!') |
+---------------------------------------------+
| 4 |
+---------------------------------------------+ Men om strängen bara är en del av understrängen är den inte en matchning:
SELECT POSITION('doggy' IN 'My dog is SOOO cute!'); Resultat:
+---------------------------------------------+
| POSITION('doggy' IN 'My dog is SOOO cute!') |
+---------------------------------------------+
| 0 |
+---------------------------------------------+ Spaces
Mellanslagstecknet är fortfarande en sträng, så vi kan inkludera mellanslag i understrängen, även om det är det enda tecknet:
SELECT POSITION(' ' IN 'My dog'); Resultat:
+---------------------------+
| POSITION(' ' IN 'My dog') |
+---------------------------+
| 3 |
+---------------------------+ Töm sträng
Så här händer när delsträngen är en tom sträng:
SELECT POSITION('' IN 'My dog'); Resultat:
+--------------------------+
| POSITION('' IN 'My dog') |
+--------------------------+
| 1 |
+--------------------------+ Ingen match
Om delsträngen inte hittas i strängen, POSITION() returnerar 0 :
SELECT position('cat' IN 'My dog'); Resultat:
+-----------------------------+
| position('cat' IN 'My dog') |
+-----------------------------+
| 0 |
+-----------------------------+ Nollargument
Tillhandahåller null för något av argumenten resulterar i null :
SELECT
POSITION(null IN 'My dog'),
POSITION('dog' IN null); Resultat:
+----------------------------+-------------------------+
| POSITION(null IN 'My dog') | POSITION('dog' IN null) |
+----------------------------+-------------------------+
| NULL | NULL |
+----------------------------+-------------------------+ Ange fel antal argument
Anropar POSITION() med fel antal argument, eller utan att skicka några argument resulterar i ett fel:
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