В SQLite можете да използвате instr()
функция за връщане на позицията на даден символ в низ.
Функцията връща само позицията на първото появяване на знака (ако има такъв).
Ако символът не бъде намерен, той връща 0.
Ако някой от аргументите е NULL, тогава той връща NULL.
Как работи
instr()
функцията приема два аргумента. Първият аргумент е низът, а вторият аргумент е символът, който искате да намерите в този низ.
Ако и двата аргумента са BLOB, тогава той връща един повече от броя байтове преди първото появяване на втория аргумент или 0, ако не се среща никъде в първия аргумент.
Синтаксисът е така:
inst(X,Y)
X
е низътY
е герой
Пример
Ето пример за демонстрация.
SELECT instr('Black cat', 'a');
Резултат:
3
Тук исках местоположението на букватаа .
В този случай буквата се появява два пъти и instr()
връща местоположението на първото появяване.
Пример за база данни
В този пример ще използвам следната таблица:
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
Ще потърся Име на продукта колона за писмо.
SELECT
ProductName,
instr(ProductName, 'd')
FROM Products;
Резултат:
ProductName instr(ProductName, 'd') ------------- ----------------------- Widget Holder 3 Blue Widget 8 Red Widget 3 Green Widget 9 Widget Stick 3 Foo Cap 0
Обърнете внимание, че последният ред няма буквата и така 0 беше върнат за този ред.
NULL стойности
Както споменахме, ако някой от аргументите е NULL, тогава се връща NULL.
SELECT
instr(NULL, 'a'),
instr('Black cat', NULL);
Резултат:
instr(NULL, 'a') instr('Black cat', NULL) ---------------- ------------------------