sql >> Databasteknik >  >> RDS >> MariaDB

Hur POSITION() fungerar i MariaDB

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

  1. Hur man installerar SQL Server på en Mac

  2. Hur man avrundar (UPP/NER) i SQL Server – 5 användbara tips

  3. Hur man lägger till ett underformulär till ett formulär i Access 2016

  4. postgreSQL mysql oracle skillnader