在MySQL中使用LIKE非常常见。我们这样使用它:WHERE field LIKE '%substring%'
。我们有一个子字符串,字段有完整的字符串。但我需要的是相反的事情。我在现场有子串。所以,我想要包含字符串子串的行。假设表格是:
----+-------------------
id | keyword
----+-------------------
1 | admission
----+-------------------
2 | head of the dept
----+-------------------
我有一个来自用户的字符串:Tell me about admission info
。我需要这样一个返回admission
的MySQL查询,因为这是用户字符串的子字符串。类似的东西:
SELECT keyword FROM table WHERE (keyword is a substring of 'Tell me about admission info')
提前感谢。
答案 0 :(得分:17)
您正在寻找LIKE运营商
模式匹配使用SQL简单正则表达式比较。 返回1(TRUE)或0(FALSE)。如果expr或pat是NULL,那么 结果为NULL。
像
这样的东西SELECT keyword
FROM table
WHERE ('Tell me about admission info' LIKE CONCAT('%', keyword, '%'))
答案 1 :(得分:2)
这项工作正常,使用REGEXP
:
SELECT keyword
FROM table
WHERE 'Tell me about admission info' REGEXP keyword;
但是只有在keyword
不包含正则表达式的转义时才会有效...
即。这样可以正常工作,而keyword
只包含字母,数字,空格等。
答案 2 :(得分:0)
尝试这样的事情:
SELECT CASE WHEN 'Tell me about admission info'
LIKE CONCAT('%',`keyword`,'%')
THEN `keyword` else null END as `keyword`
FROM table1
WHERE CASE WHEN 'Tell me about admission info'
LIKE CONCAT('%',`keyword`,'%')
THEN `keyword` else null END is not null;
<强> SQL Fiddle.. 强>