php mysql搜索查询通配符问题

时间:2010-09-12 00:38:03

标签: php mysql wildcard

如果我搜索LENA,我只想得到LENA是一个单词的结果,而不是像Lenason或Anna-Lena或Malena这样的单词的一部分

如何编写此类查询,而不是

"select * from users where name like '%LENA%'"

它应该是什么?

3 个答案:

答案 0 :(得分:4)

使用这个:

select * from users where name like '% LENA %' OR name like 'LENA %' OR name like '% LENA' OR name like 'LENA'

试一试,它会起作用,并且在开始和结束时都有2个空格太简单了。 它冗长而快速的查询。你也可以使用全文搜索,Concat,Regex ......但对我来说,我喜欢简单,只需在%之前添加一些空格。

但是,您可以尝试更短但更慢的查询:

SELECT * FROM users  WHERE name REGEXP '(^|\s+)LENA($|\s+)' 

答案 1 :(得分:1)

您可以使用REGEXP

SELECT fields 
  FROM users
 WHERE name REGEXP '(^|\s+)LENA($|\s+)'

答案 2 :(得分:1)

你可能最好还是考虑一下Full Text Search

否则我认为你做了类似这样的事情

"select * from users WHERE CONCAT(' ',name, ' ') like '% LENA %'"

由于需要全表扫描,因此效率非常低。