In MariaDB, INSTR()
is een ingebouwde tekenreeksfunctie die de positie van het eerste voorkomen van een subtekenreeks binnen een andere tekenreeks retourneert.
INSTR()
is vergelijkbaar met de LOCATE()
functie, behalve dat LOCATE()
biedt de mogelijkheid om een startpositie voor de zoekopdracht op te geven. Ook is de argumentvolgorde tussen deze twee functies omgekeerd.
Syntaxis
De syntaxis gaat als volgt:
INSTR(str,substr)
Waar str
is de string, substr
is de substring die moet worden gevonden.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT INSTR('The hot sun', 'hot');
Resultaat:
+-----------------------------+ | INSTR('The hot sun', 'hot') | +-----------------------------+ | 5 | +-----------------------------+
Hoofdlettergevoelig
INSTR()
voert een hoofdletterongevoelige zoekopdracht uit:
SELECT INSTR('The hot sun', 'HOT');
Resultaat:
+-----------------------------+ | INSTR('The hot sun', 'HOT') | +-----------------------------+ | 5 | +-----------------------------+
Meerdere gebeurtenissen
Als de subtekenreeks meer dan één keer voorkomt, wordt alleen de positie van de eerste geretourneerd:
SELECT INSTR('The hot sun is really hot', 'hot');
Resultaat:
+-------------------------------------------+ | INSTR('The hot sun is really hot', 'hot') | +-------------------------------------------+ | 5 | +-------------------------------------------+
Gedeeltelijke overeenkomst
Als de subtekenreeks deel uitmaakt van een groter woord, is het nog steeds een overeenkomst:
SELECT INSTR('The hottest sun', 'hot');
Resultaat:
+---------------------------------+ | INSTR('The hottest sun', 'hot') | +---------------------------------+ | 5 | +---------------------------------+
Maar als de string slechts een deel van de substring is, is het geen overeenkomst:
SELECT INSTR('The hot sun', 'hottest');
Resultaat:
+---------------------------------+ | INSTR('The hot sun', 'hottest') | +---------------------------------+ | 0 | +---------------------------------+
Spaties
Het spatieteken is nog steeds een tekenreeks, dus we kunnen spaties in de subtekenreeks opnemen, zelfs als dit het enige teken is:
SELECT INSTR('The hot sun', ' ');
Resultaat:
+---------------------------+ | INSTR('The hot sun', ' ') | +---------------------------+ | 4 | +---------------------------+
Lege string
Dit is wat er gebeurt als de subtekenreeks een lege tekenreeks is:
SELECT INSTR('The hot sun', '');
Resultaat:
+--------------------------+ | INSTR('The hot sun', '') | +--------------------------+ | 1 | +--------------------------+
Geen overeenkomst
Als de substring niet wordt gevonden in de string, INSTR()
retourneert 0
:
SELECT INSTR('The hot sun', 'cold');
Resultaat:
+------------------------------+ | INSTR('The hot sun', 'cold') | +------------------------------+ | 0 | +------------------------------+
Nullargumenten
null
opgeven voor elk van de argumenten resulteert in null
:
SELECT
INSTR('The hot sun', null),
INSTR(null, 'hot');
Resultaat:
+----------------------------+--------------------+ | INSTR('The hot sun', null) | INSTR(null, 'hot') | +----------------------------+--------------------+ | NULL | NULL | +----------------------------+--------------------+
Het verkeerde aantal argumenten opgeven
INSTR()
. aanroepen met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:
SELECT INSTR('hot');
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'INSTR'