Ответ 1
Выполните следующий запрос:
select name from memberdb where name like '% LIM %' OR name like "LIM %" OR name like "% LIM" OR name like "LIM"
Я пытаюсь получить информацию из моей базы данных.
У меня есть слова типа Lim Won Mong
и Limited
.
Если я выполняю свой запрос, SELECT name FROM memberdb WHERE name LIKE '%LIM%'
, он отображает как Lim Won Mong
, так и Limited
, и мне нужны только данные из Lim Won Mong
.
Как мне переписать мой запрос?
Выполните следующий запрос:
select name from memberdb where name like '% LIM %' OR name like "LIM %" OR name like "% LIM" OR name like "LIM"
Если вы хотите совместить слово "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 или новее).
Попробуйте следующее:
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'