sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer POSITION() i MariaDB

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

  1. OPDATERE flere tabeller i MySQL ved hjælp af LEFT JOIN

  2. Hvordan ændrer jeg min session til at vise UTF8 i Oracle?

  3. Brug af caching contribs pg_prewarm og pg_hibernator i PostgreSQL 9.4.

  4. Algoritme til at undgå SQL-injektion på MSSQL Server fra C#-kode?