SQLite查询,'LIKE'

时间:2012-09-27 04:06:12

标签: sql sqlite sql-like

我正在尝试从我的数据库中检索信息 我有Lim Won MongLimited等字词。

如果我查询SELECT name FROM memberdb WHERE name LIKE '%LIM%',它会同时显示Lim Won MongLimited,我只想要来自Lim Won Mong的数据。

我应该如何重写我的查询?

3 个答案:

答案 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'

See this SQLFiddle