V SQLite můžete použít instr()
funkce, která vrátí pozici daného znaku v řetězci.
Funkce vrací pouze pozici prvního výskytu znaku (pokud existuje).
Pokud znak není nalezen, vrátí 0.
Pokud je některý z argumentů NULL, vrátí hodnotu NULL.
Jak to funguje
instr()
funkce přijímá dva argumenty. První argument je řetězec a druhý argument je znak, který chcete v tomto řetězci najít.
Pokud jsou oba argumenty BLOB, vrátí o jeden více, než je počet bajtů před prvním výskytem druhého argumentu, nebo 0, pokud se nevyskytuje nikde v prvním argumentu.
Syntaxe vypadá takto:
inst(X,Y)
X
je řetězecY
je postava
Příklad
Zde je příklad k demonstraci.
SELECT instr('Black cat', 'a');
Výsledek:
3
Zde jsem chtěl umístění písmene a .
V tomto případě se písmeno objeví dvakrát a instr()
vrátí umístění prvního výskytu.
Příklad databáze
V tomto příkladu použiji následující tabulku:
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
Vyhledám Název produktu sloupec pro písmeno.
SELECT
ProductName,
instr(ProductName, 'd')
FROM Products;
Výsledek:
ProductName instr(ProductName, 'd') ------------- ----------------------- Widget Holder 3 Blue Widget 8 Red Widget 3 Green Widget 9 Widget Stick 3 Foo Cap 0
Všimněte si, že poslední řádek neobsahoval písmeno, a tedy 0 byl vrácen pro daný řádek.
Hodnoty NULL
Jak již bylo zmíněno, pokud je některý z argumentů NULL, vrátí se NULL.
SELECT
instr(NULL, 'a'),
instr('Black cat', NULL);
Výsledek:
instr(NULL, 'a') instr('Black cat', NULL) ---------------- ------------------------