sql >> Databasteknik >  >> RDS >> MariaDB

Hur LOCATE() fungerar i MariaDB

I MariaDB, LOCATE() är en inbyggd strängfunktion som returnerar positionen för den första förekomsten av en delsträng i en annan sträng.

LOCATE() liknar INSTR() funktion, förutom att LOCATE() ger möjlighet att ange en startposition för sökningen. Argumentordningen är också omvänd mellan dessa två funktioner.

Syntax

LOCATE() Funktionen stöder en syntax med två argument och en syntax med tre argument.

Syntax med två argument:

LOCATE(substr,str) 

Syntax med tre argument:

LOCATE(substr,str,pos) 

Där str är strängen, substr är delsträngen att hitta och pos är platsen för att starta sökningen.

Exempel

Här är ett grundläggande exempel:

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

Resultat:

+-------------------------------------+| LOCATE('het', 'Den heta solen') |+------------------------------------+| 5 |+-------------------------------------+

Startposition

Här är ett exempel på att ange en startposition för sökningen:

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

Resultat:

+------------------------------------------------------ --+| LOCATE('hot', 'Den heta solen är riktigt varm', 8) |+-------------------------------------- ------------------+| 23 |+------------------------------------------------------ -+

Skaftkänslighet

LOCATE() utför en skiftlägesokänslig sökning:

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

Resultat:

+-------------------------------------+| LOCATE('HOT', 'Den heta solen') |+------------------------------------+| 5 |+-------------------------------------+

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 LOCATE('hot', 'The hot sun is really hot'); 

Resultat:

+----------------------------------------------------+| LOCATE('het', 'Den heta solen är riktigt varm') |+---------------------------------------- -----------+| 5 |+----------------------------------------------------+ 

Här är den med ett utgångsläge:

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

Resultat:

+------------------------------------------------------ --+| LOCATE('het', 'Den heta solen är riktigt varm', 20) |+------------------------------------------- ------------------+| 23 |+------------------------------------------------------ -+

Delvis matchning

Om delsträngen är en del av ett större ord, är det fortfarande en matchning:

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

Resultat:

+------------------------------------------+| LOCATE('het', 'Den hetaste solen') |+----------------------------------------+| 5 |+----------------------------------------+

Men om strängen bara är en del av understrängen är den inte en matchning:

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

Resultat:

+------------------------------------------+| LOCATE('hetaste', 'Den heta solen') |+----------------------------------------+| 0 |+------------------------------------------+

Spaces

Mellanslagstecknet är fortfarande en sträng, så vi kan inkludera mellanslag i understrängen, även om det är det enda tecknet:

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

Resultat:

+------------------------------------+| LOCATE(' ', 'Den heta solen') |+----------------------------------+| 4 |+------------------------------------+

Töm sträng

Så här händer när delsträngen är en tom sträng:

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

Resultat:

+--------------------------------+| LOCATE('', 'Den heta solen') |+--------------------------------+| 1 |+-----------------------------------+

Ingen match

Om delsträngen inte hittas i strängen, LOCATE() returnerar 0 :

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

Resultat:

+--------------------------------------+| LOCATE('kallt', 'Den heta solen') |+-------------------------------------+| 0 |+--------------------------------------+

Nollargument

Tillhandahåller null för något av argumenten resulterar i null :

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

Resultat:

+------------------------------------+---------------- -----+| LOCATE(null, 'Den heta solen') | LOCATE('hot', null) |+------------------------------------+---------------- -----------+| NULL | NULL |+-------------------------------------+---------------- ----+

Ange fel antal argument

Anropar LOCATE() med fel antal argument, eller utan att skicka några argument resulterar i ett fel:

SELECT LOCATE('hot'); 

Resultat:

ERROR 1582 (42000):Fel parameterantal i anropet till den ursprungliga funktionen 'LOCATE'

  1. Hur man flyttar fil från en katalog till en annan med PL SQL

  2. Hur man ansluter GraphQL och PostgreSQL

  3. Hur ändrar jag SQL Server 2005 till att vara skiftlägeskänslig?

  4. Skicka flera uppsättningar eller matriser av värden till en funktion