2014-09-13 262 views
1

我得到了一个有关SQL查询的问题。如果单个单词sql查询可以检测到字符串,但如果我在字符串内添加多个单词,则不会显示任何结果。LIKE mysql搜索与CONCAT不起作用

SELECT * FROM rules WHERE keyword LIKE CONCAT('%','$message','%') 

输入1(显示结果)

$message = "ASK" 

输入2(显示没有结果)

$message = "I WANT TO ASK" 

请建议。谢谢。

+0

您的'CONCAT'表达式将'$ message'视为字符串文字。尝试在'CONCAT'内删除''message''周围的单引号。 – dasblinkenlight 2014-09-13 10:40:51

+0

它不会使用输入1和2显示任何结果 – 2014-09-13 10:42:19

+0

您可以分享您的样本数据,还是更好 - [sqlfiddle](http://sqlfiddle.com)? – Mureinik 2014-09-13 10:43:26

回答

1

我假设你想要这些行的关键字列的值是消息的一部分。这是关键词的典型用例。

如果这是正确的,那么你已经得到这个结果与功能INSTR的帮助:

SELECT * FROM rules WHERE INSTR('$message', keyword) > 0; 

虽然

SELECT * FROM rules WHERE '$message' LIKE CONCAT('%', keyword, '%'); 

将工作大部分时间也是如此,它有限制,关键字不包含LIKE运算符的通配符:%_。 INSTR没有这个限制。

+0

谢谢!!愿上帝保佑你兄弟! – 2014-09-13 11:49:14

+1

不客气! – VMai 2014-09-13 11:49:42