Подтвердить что ты не робот

SQLite-запрос, "LIKE"

Я пытаюсь получить информацию из моей базы данных.
У меня есть слова типа Lim Won Mong и Limited.

Если я выполняю свой запрос, SELECT name FROM memberdb WHERE name LIKE '%LIM%', он отображает как Lim Won Mong, так и Limited, и мне нужны только данные из Lim Won Mong.

Как мне переписать мой запрос?

4b9b3361

Ответ 1

Выполните следующий запрос:

select name from memberdb where name like '% LIM %' OR name like "LIM %" OR name like "% LIM" OR name like "LIM"

Ответ 2

Если вы хотите совместить слово "lim" (поэтому он соответствует "lim", "lim a", "lim a" и "lim", но не "limit" или "alim" ), вы может использовать ключевое слово SQL REGEXP и использовать границы слов ([[:<:]] и [[:>:]]). Эти совпадающие пробелы (пробелы, табуляции, новые строки), начало/конец строки и некоторые знаки пунктуации.

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

SELECT name FROM memberdb WHERE name REGEXP '[[:<:]]LIM[[:>:]]'

Обратите внимание, что REGEXP НЕ чувствителен к регистру (если не используется двоичная строка).

Если вы хотите, чтобы он соответствовал ТОЛЬКО местам, вы все равно можете использовать REGEXP; это будет соответствовать началу строки или пробелу, затем "lim", затем пробелу или концу строки:

SELECT name FROM memberdb WHERE name REGEXP '(^| )LIM( |$)'

Оба решения были протестированы на версиях SQL, поддерживающих REGEXP (SQLite 3+, все Android использует 3.5.9 или новее).

Ответ 3

Попробуйте следующее:

SELECT name 
FROM MEMBERDB 
WHERE name LIKE 'LIM %' OR name LIKE '% LIM'
OR name LIKE '% LIM %' OR name LIKE 'LIM';

Предположим, что у вас есть данные примерно так:

'LIMITED'
'Lim Won Mong'
'Wang Tat Lim'
'ELIM TED'
'lim'
'Wang LIM tim'

Этот запрос вернет вам только следующие данные:

'Lim Won Mong'
'Wang Tat Lim'
'lim'
'Wang LIM tim'

См. этот SQLFiddle