我正在尝试从我的数据库中检索信息
我有Lim Won Mong
和Limited
等字词。
如果我查询SELECT name FROM memberdb WHERE name LIKE '%LIM%'
,它会同时显示Lim Won Mong
和Limited
,我只想要来自Lim Won Mong
的数据。
我应该如何重写我的查询?
答案 0 :(得分:35)
执行以下查询:
select name from memberdb where name like '% LIM %' OR name like "LIM %" OR name like "% LIM" OR name like "LIM"
答案 1 :(得分:4)
如果你想匹配单词“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( |$)'
这两个解决方案都已经在支持REGEXP
的SQL版本上进行了测试(SQLite 3+;所有Android都使用3.5.9或更高版本)。
答案 2 :(得分: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'