W SQLite możesz użyć instr() funkcja zwracająca pozycję danego znaku w ciągu.
Funkcja zwraca tylko pozycję pierwszego wystąpienia znaku (jeśli istnieje).
Jeśli znak nie zostanie znaleziony, zwraca 0.
Jeśli którykolwiek z argumentów ma wartość NULL, zwraca NULL.
Jak to działa
instr() funkcja przyjmuje dwa argumenty. Pierwszym argumentem jest łańcuch, a drugim znakiem, który chcesz znaleźć w tym łańcuchu.
Jeśli argumenty są obydwoma blokami BLOB, zwraca o jeden bajt więcej niż liczba bajtów przed pierwszym wystąpieniem drugiego argumentu lub 0, jeśli nie występuje nigdzie w pierwszym argumencie.
Składnia wygląda tak:
inst(X,Y) Xjest ciągiemYjest postacią
Przykład
Oto przykład do zademonstrowania.
SELECT instr('Black cat', 'a'); Wynik:
3
Tutaj chciałem zlokalizować literę a .
W tym przypadku litera pojawia się dwukrotnie, a instr() zwraca lokalizację pierwszego wystąpienia.
Przykład bazy danych
W tym przykładzie użyję poniższej tabeli:
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
Będę przeszukiwać ProductName kolumna na list.
SELECT
ProductName,
instr(ProductName, 'd')
FROM Products; Wynik:
ProductName instr(ProductName, 'd') ------------- ----------------------- Widget Holder 3 Blue Widget 8 Red Widget 3 Green Widget 9 Widget Stick 3 Foo Cap 0
Zwróć uwagę, że ostatni wiersz nie zawierał litery, więc 0 został zwrócony dla tego wiersza.
Wartości NULL
Jak wspomniano, jeśli którykolwiek z argumentów ma wartość NULL, zwracana jest wartość NULL.
SELECT
instr(NULL, 'a'),
instr('Black cat', NULL); Wynik:
instr(NULL, 'a') instr('Black cat', NULL)
---------------- ------------------------