提问人:Andrew G. Johnson 提问时间:8/28/2009 最后编辑:chollidaAndrew G. Johnson 更新时间:3/24/2016 访问量:983
关于“反向 LIKE”的 MySQL 问题
MySQL question about "reverse LIKEs"
问:
好吧,鉴于我有一个值,我想检查数据库中的潜在匹配项(在一个 varchar 字段中),所以我写了这样的东西:
SELECT * FROM table WHERE column LIKE "%value%"
如果值类似于“test”并且列的值为“this is a test”,这将起作用,但是如果它被反转,那么我将不会得到匹配,我已经尝试过以下事情:
SELECT * FROM table WHERE CONCAT("%",column,"%") LIKE "value"
但不知道如何向谷歌表达以获得我需要的回复,请帮忙!
答:
12赞
Eric
8/28/2009
#1
您可以反转 like
语句。只是使用与常规查询相同的语法:like
select
*
from
table
where
'value' like concat('%', column, '%')
当然,如果你觉得狂野和疯狂,你也可以使用 instr
:
select * from table where instr('value', column) > 0
我不知道哪个更快,因为我没有要测试的MySQL实例,但值得尝试两者,看看哪个获胜。
评论
1赞
OMG Ponies
8/28/2009
它将使用索引(如果列存在索引)来转换数据 - 而不是查找。使用内联视图将所需内容添加到列中,然后进行比较会更快。如果您只想要单词出现的行,则最好使用 INSTR。
3赞
LukeH
8/28/2009
#2
SELECT *
FROM table
WHERE 'value' LIKE CONCAT('%', column, '%')
评论
"test"
"this is a test"