I MariaDB, INSTR()
är en inbyggd strängfunktion som returnerar positionen för den första förekomsten av en delsträng i en annan sträng.
INSTR()
liknar LOCATE()
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
Syntaxen ser ut så här:
INSTR(str,substr)
Där str
är strängen, substr
är delsträngen att hitta.
Exempel
Här är ett grundläggande exempel:
SELECT INSTR('The hot sun', 'hot');
Resultat:
+-----------------------------+ | INSTR('The hot sun', 'hot') | +-----------------------------+ | 5 | +-----------------------------+
Inte skiftlägeskänslig
INSTR()
utför en skiftlägesokänslig sökning:
SELECT INSTR('The hot sun', 'HOT');
Resultat:
+-----------------------------+ | INSTR('The hot sun', 'HOT') | +-----------------------------+ | 5 | +-----------------------------+
Flera förekomster
Om delsträngen förekommer mer än en gång, returneras endast positionen för den första:
SELECT INSTR('The hot sun is really hot', 'hot');
Resultat:
+-------------------------------------------+ | INSTR('The hot sun is really hot', 'hot') | +-------------------------------------------+ | 5 | +-------------------------------------------+
Delvis matchning
Om delsträngen är en del av ett större ord, är det fortfarande en matchning:
SELECT INSTR('The hottest sun', 'hot');
Resultat:
+---------------------------------+ | INSTR('The hottest sun', 'hot') | +---------------------------------+ | 5 | +---------------------------------+
Men om strängen bara är en del av understrängen är den inte en matchning:
SELECT INSTR('The hot sun', 'hottest');
Resultat:
+---------------------------------+ | INSTR('The hot sun', 'hottest') | +---------------------------------+ | 0 | +---------------------------------+
Spaces
Mellanslagstecknet är fortfarande en sträng, så vi kan inkludera mellanslag i understrängen, även om det är det enda tecknet:
SELECT INSTR('The hot sun', ' ');
Resultat:
+---------------------------+ | INSTR('The hot sun', ' ') | +---------------------------+ | 4 | +---------------------------+
Töm sträng
Så här händer när delsträngen är en tom sträng:
SELECT INSTR('The hot sun', '');
Resultat:
+--------------------------+ | INSTR('The hot sun', '') | +--------------------------+ | 1 | +--------------------------+
Ingen match
Om delsträngen inte hittas i strängen, INSTR()
returnerar 0
:
SELECT INSTR('The hot sun', 'cold');
Resultat:
+------------------------------+ | INSTR('The hot sun', 'cold') | +------------------------------+ | 0 | +------------------------------+
Nollargument
Tillhandahåller null
för något av argumenten resulterar i null
:
SELECT
INSTR('The hot sun', null),
INSTR(null, 'hot');
Resultat:
+----------------------------+--------------------+ | INSTR('The hot sun', null) | INSTR(null, 'hot') | +----------------------------+--------------------+ | NULL | NULL | +----------------------------+--------------------+
Ange fel antal argument
Anropar INSTR()
med fel antal argument, eller utan att skicka några argument resulterar i ett fel:
SELECT INSTR('hot');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'INSTR'