SELECT包含子字符串的MySQL字段

时间:2013-09-15 07:27:55

标签: mysql sql string

在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')

提前感谢。

3 个答案:

答案 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, '%'))

SQL Fiddle DEMO

答案 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..