I MariaDB, INSTR()
er en indbygget strengfunktion, der returnerer positionen for den første forekomst af en understreng i en anden streng.
INSTR()
ligner LOCATE()
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
Syntaksen ser sådan ud:
INSTR(str,substr)
Hvor str
er strengen, substr
er den understreng, der skal findes.
Eksempel
Her er et grundlæggende eksempel:
SELECT INSTR('The hot sun', 'hot');
Resultat:
+-----------------------------+ | INSTR('The hot sun', 'hot') | +-----------------------------+ | 5 | +-----------------------------+
Uafhængig af store og små bogstaver
INSTR()
udfører en søgning uden store og små bogstaver:
SELECT INSTR('The hot sun', 'HOT');
Resultat:
+-----------------------------+ | INSTR('The hot sun', 'HOT') | +-----------------------------+ | 5 | +-----------------------------+
Flere forekomster
Hvis understrengen forekommer mere end én gang, returneres kun positionen for den første:
SELECT INSTR('The hot sun is really hot', 'hot');
Resultat:
+-------------------------------------------+ | INSTR('The hot sun is really hot', 'hot') | +-------------------------------------------+ | 5 | +-------------------------------------------+
Delvis match
Hvis understrengen er en del af et større ord, er det stadig et match:
SELECT INSTR('The hottest sun', 'hot');
Resultat:
+---------------------------------+ | INSTR('The hottest sun', 'hot') | +---------------------------------+ | 5 | +---------------------------------+
Men hvis strengen kun er en del af understrengen, er den ikke et match:
SELECT INSTR('The hot sun', 'hottest');
Resultat:
+---------------------------------+ | INSTR('The hot sun', 'hottest') | +---------------------------------+ | 0 | +---------------------------------+
Mellemrum
Mellemrumstegnet er stadig en streng, så vi kan inkludere mellemrum i understrengen, selvom det er det eneste tegn:
SELECT INSTR('The hot sun', ' ');
Resultat:
+---------------------------+ | INSTR('The hot sun', ' ') | +---------------------------+ | 4 | +---------------------------+
Tøm streng
Her er, hvad der sker, når understrengen er en tom streng:
SELECT INSTR('The hot sun', '');
Resultat:
+--------------------------+ | INSTR('The hot sun', '') | +--------------------------+ | 1 | +--------------------------+
Ingen match
Hvis understrengen ikke findes i strengen, INSTR()
returnerer 0
:
SELECT INSTR('The hot sun', 'cold');
Resultat:
+------------------------------+ | INSTR('The hot sun', 'cold') | +------------------------------+ | 0 | +------------------------------+
Nul-argumenter
Giver null
for ethvert af argumenterne resulterer i null
:
SELECT
INSTR('The hot sun', null),
INSTR(null, 'hot');
Resultat:
+----------------------------+--------------------+ | INSTR('The hot sun', null) | INSTR(null, 'hot') | +----------------------------+--------------------+ | NULL | NULL | +----------------------------+--------------------+
Angivelse af det forkerte antal argumenter
Kalder INSTR()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT INSTR('hot');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'INSTR'