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

Sådan fungerer LOCATE() i MariaDB

I MariaDB, LOCATE() er en indbygget strengfunktion, der returnerer positionen for den første forekomst af en understreng i en anden streng.

LOCATE() ligner INSTR() funktion, bortset fra at LOCATE() giver mulighed for at angive en startposition for søgningen. Argumentrækkefølgen er også omvendt mellem disse to funktioner.

Syntaks

LOCATE() funktion understøtter en to-argument-syntaks og en tre-argument-syntaks.

To argument syntaks:

LOCATE(substr,str) 

Syntaks med tre argumenter:

LOCATE(substr,str,pos) 

Hvor str er strengen, substr er den understreng, der skal findes, og pos er positionen til at starte søgningen.

Eksempel

Her er et grundlæggende eksempel:

SELECT LOCATE('hot', 'The hot sun'); 

Resultat:

+--------------------------------------+| LOCATE('hot', 'Den varme sol') |+------------------------------------+| 5 |+-------------------------------------+

Startposition

Her er et eksempel på at angive en startposition for søgningen:

SELECT LOCATE('hot', 'The hot sun is really hot', 8); 

Resultat:

+---------------------------------------------- --+| LOCATE('hot', 'Den varme sol er virkelig varm', 8) |+-------------------------------------- ------------------+| 23 |+------------------------------------------------------ -+

Skrivar og bogstaver

LOCATE() udfører en søgning uden store og små bogstaver:

SELECT LOCATE('HOT', 'The hot sun'); 

Resultat:

+--------------------------------------+| LOCATE('HOT', 'Den varme sol') |+------------------------------------+| 5 |+-------------------------------------+

Flere forekomster

Hvis understrengen forekommer mere end én gang, returneres kun positionen for den første (fra startpositionen):

SELECT LOCATE('hot', 'The hot sun is really hot'); 

Resultat:

+----------------------------------------------------+| LOCATE('hot', 'Den varme sol er virkelig varm') |+---------------------------------------- -----------+| 5 |+----------------------------------------------------+ 

Her er den med en startposition:

SELECT LOCATE('hot', 'The hot sun is really hot', 20); 

Resultat:

+---------------------------------------------- --+| LOCATE('hot', 'Den varme sol er virkelig varm', 20) |+------------------------------------- ------------------+| 23 |+------------------------------------------------------ -+

Delvis match

Hvis understrengen er en del af et større ord, er det stadig et match:

SELECT LOCATE('hot', 'The hottest sun'); 

Resultat:

+----------------------------------------+| LOCATE('hot', 'Den varmeste sol') |+----------------------------------------+| 5 |+------------------------------------------+

Men hvis strengen kun er en del af understrengen, er den ikke et match:

SELECT LOCATE('hottest', 'The hot sun'); 

Resultat:

+----------------------------------------+| LOCATE('hottest', 'Den varme sol') |+----------------------------------------+| 0 |+----------------------------------------+

Mellemrum

Mellemrumstegnet er stadig en streng, så vi kan inkludere mellemrum i understrengen, selvom det er det eneste tegn:

SELECT LOCATE(' ', 'The hot sun'); 

Resultat:

+------------------------------------+| LOCATE(' ', 'Den varme sol') |+----------------------------------+| 4 |+------------------------------------+

Tøm streng

Her er, hvad der sker, når understrengen er en tom streng:

SELECT LOCATE('', 'The hot sun'); 

Resultat:

+--------------------------------+| LOCATE('', 'Den varme sol') |+--------------------------------+| 1 |+-----------------------------------+

Ingen match

Hvis understrengen ikke findes i strengen, LOCATE() returnerer 0 :

SELECT LOCATE('cold', 'The hot sun'); 

Resultat:

+---------------------------------------+| LOCATE('kold', 'Den varme sol') |+------------------------------------+| 0 |+--------------------------------------+

Nul-argumenter

Giver null for ethvert af argumenterne resulterer i null :

SELECT 
    LOCATE(null, 'The hot sun'),
    LOCATE('hot', null); 

Resultat:

+-------------------------------------+---------------- -----+| LOCATE(null, 'Den varme sol') | LOCATE('hot', null) |+------------------------------------+---------------- -----------+| NULL | NULL |+-------------------------------+---------------- ----+

Angivelse af det forkerte antal argumenter

Kalder LOCATE() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT LOCATE('hot'); 

Resultat:

FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'LOCATE'

  1. Sådan tilføjer du en titel til en rapporthoved i Microsoft Access

  2. Hvorfor forpligter SQL*Plus ved exit?

  3. 4 måder at ændre tidszonen i Oracle

  4. Brug af Excel VBA til at køre SQL-forespørgsel