我正在尝试从我的数据库中检索信息。
我有像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”(所以它匹配“a lim”、“lim a”、“a lim a”和“lim”,但不匹配“limit”或“alim”),你可以使用SQLREGEXP
关键字,并使用单词边界([[:<:]]
和[[:>:]]
)。这些也匹配空格(空格、制表符、换行符)、字符串开始/结束和一些标点符号。
像这样的东西:
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'