In SQLite kun je de instr()
. gebruiken functie om de positie van een bepaald teken binnen een tekenreeks terug te geven.
De functie retourneert alleen de positie van het eerste voorkomen van het teken (indien aanwezig).
Als het teken niet wordt gevonden, retourneert het 0.
Als een van de argumenten NULL is, wordt NULL geretourneerd.
Hoe het werkt
De instr()
functie accepteert twee argumenten. Het eerste argument is de string, en het tweede argument is het karakter dat u binnen die string wilt vinden.
Als de argumenten beide BLOB's zijn, retourneert het één meer dan het aantal bytes voorafgaand aan het eerste optreden van het tweede argument, of 0 als het nergens binnen het eerste argument voorkomt.
De syntaxis gaat als volgt:
inst(X,Y)
X
is de tekenreeksY
is het personage
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SELECT instr('Black cat', 'a');
Resultaat:
3
Hier wilde ik de locatie van de letter a .
In dit geval verschijnt de letter twee keer, en instr()
geeft de locatie van de eerste keer dat het voorkomt.
Een databasevoorbeeld
In dit voorbeeld ga ik de volgende tabel gebruiken:
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Blue Widget 10.0 3 Red Widget 10.0 4 Green Widget 10.0 5 Widget Stick 89.75 6 Foo Cap 11.99
Ik ga zoeken in de ProductName kolom voor een letter.
SELECT
ProductName,
instr(ProductName, 'd')
FROM Products;
Resultaat:
ProductName instr(ProductName, 'd') ------------- ----------------------- Widget Holder 3 Blue Widget 8 Red Widget 3 Green Widget 9 Widget Stick 3 Foo Cap 0
Merk op dat de laatste rij de letter niet had en dus 0 is geretourneerd voor die rij.
NULL-waarden
Zoals gezegd, als een van de argumenten NULL is, wordt NULL geretourneerd.
SELECT
instr(NULL, 'a'),
instr('Black cat', NULL);
Resultaat:
instr(NULL, 'a') instr('Black cat', NULL) ---------------- ------------------------