我得到了一个有关SQL查询的问题。如果单个单词sql查询可以检测到字符串,但如果我在字符串内添加多个单词,则不会显示任何结果。LIKE mysql搜索与CONCAT不起作用
SELECT * FROM rules WHERE keyword LIKE CONCAT('%','$message','%')
输入1(显示结果)
$message = "ASK"
输入2(显示没有结果)
$message = "I WANT TO ASK"
请建议。谢谢。
我得到了一个有关SQL查询的问题。如果单个单词sql查询可以检测到字符串,但如果我在字符串内添加多个单词,则不会显示任何结果。LIKE mysql搜索与CONCAT不起作用
SELECT * FROM rules WHERE keyword LIKE CONCAT('%','$message','%')
输入1(显示结果)
$message = "ASK"
输入2(显示没有结果)
$message = "I WANT TO ASK"
请建议。谢谢。
我假设你想要这些行的关键字列的值是消息的一部分。这是关键词的典型用例。
如果这是正确的,那么你已经得到这个结果与功能INSTR的帮助:
SELECT * FROM rules WHERE INSTR('$message', keyword) > 0;
虽然
SELECT * FROM rules WHERE '$message' LIKE CONCAT('%', keyword, '%');
将工作大部分时间也是如此,它有限制,关键字不包含LIKE运算符的通配符:%
和_
。 INSTR没有这个限制。
谢谢!!愿上帝保佑你兄弟! – 2014-09-13 11:49:14
不客气! – VMai 2014-09-13 11:49:42
您的'CONCAT'表达式将'$ message'视为字符串文字。尝试在'CONCAT'内删除''message''周围的单引号。 – dasblinkenlight 2014-09-13 10:40:51
它不会使用输入1和2显示任何结果 – 2014-09-13 10:42:19
您可以分享您的样本数据,还是更好 - [sqlfiddle](http://sqlfiddle.com)? – Mureinik 2014-09-13 10:43:26