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)
X
jest ciągiemY
jest 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) ---------------- ------------------------