I SQLite kan du använda instr()
funktion för att returnera positionen för ett givet tecken i en sträng.
Funktionen returnerar endast positionen för den första förekomsten av tecknet (om någon).
Om tecknet inte hittas, returnerar det 0.
Om något av argumenten är NULL, returnerar det NULL.
Så fungerar det
instr()
funktion accepterar två argument. Det första argumentet är strängen och det andra argumentet är det tecken du vill hitta inom den strängen.
Om argumenten är båda BLOB, returnerar det en mer än antalet byte före den första förekomsten av det andra argumentet, eller 0 om det inte förekommer någonstans inom det första argumentet.
Syntaxen ser ut så här:
inst(X,Y)
X
är strängenY
är karaktären
Exempel
Här är ett exempel att visa.
SELECT instr('Black cat', 'a');
Resultat:
3
Här ville jag ha platsen för bokstaven a .
I det här fallet visas bokstaven två gånger och instr()
returnerar platsen för den första förekomsten.
Ett databasexempel
I det här exemplet kommer jag att använda följande tabell:
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
Jag ska söka efter Produktnamn kolumn för ett brev.
SELECT
ProductName,
instr(ProductName, 'd')
FROM Products;
Resultat:
ProductName instr(ProductName, 'd') ------------- ----------------------- Widget Holder 3 Blue Widget 8 Red Widget 3 Green Widget 9 Widget Stick 3 Foo Cap 0
Observera att den sista raden inte hade bokstaven och därför 0 returnerades för den raden.
NULL-värden
Som nämnts, om något av argumenten är NULL, returneras NULL.
SELECT
instr(NULL, 'a'),
instr('Black cat', NULL);
Resultat:
instr(NULL, 'a') instr('Black cat', NULL) ---------------- ------------------------