Как проверить, содержит ли строка значение в базе данных? - PullRequest
0 голосов
/ 04 мая 2019

Предположим, у меня есть база данных с:

John Smith - 103

Jane Doe - 287

Mike Smith - 371

И у меня есть строка вроде:

"Let's see the value of John Smith in the database"

Мне нужен способ проверить, имеет ли эта строка любое из имен вэто и получить значение, связанное с именем.

Как я могу сделать это в sqlite?

Это не то же самое, что вопрос, связанный, это обратный.У меня есть строка, и я ищу шаблон, который соответствует ей.

Если бы я сделал:

SELECT *
FROM TABLE
WHERE column LIKE '%string%'

Я бы ничего не получил.

Это было бы:

SELECT *
FROM TABLE
WHERE string LIKE '%column%'

Но я не думаю, что это можно сделать так.

1 Ответ

1 голос
/ 04 мая 2019

Вы можете использовать sqlite instr :

инстр (X, Y)

Функция instr (X, Y) находит первое вхождение строки Y в строке X и возвращает количество предыдущих символов плюс 1, или 0, если Y нигде не найден в X. Или, если X и Y оба BLOB, то instr (X, Y) возвращает на один больше, чем число байтов до первого появление Y или 0, если Y не встречается где-либо внутри X. Если оба аргументы X и Y для instr (X, Y) не равны NULL и не являются BLOB-объектами оба интерпретируются как строки. Если X или Y равны NULL в instr (X, Y), тогда результат равен NULL.

Что-то вроде:

SELECT * from table
WHERE instr("Let's see the value of John Smith in the database",name) <> 0

Возможно, вы захотите lower() или upper() всех строк для обработки регистра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...