15

使用 LIKE 在 MySQL 中很常见。我们这样使用它:WHERE field LIKE '%substring%'. 我们有一个子字符串,而字段有完整的字符串。但我需要的是相反的东西。我在字段中有子字符串。所以,我想要包含我的字符串的子字符串的那一行。假设表格是:

----+-------------------
 id | keyword
----+-------------------
  1 | admission
----+-------------------
  2 | head of the dept
----+-------------------

我有一个来自用户的字符串:Tell me about admission info。我需要这样一个返回的 MySQL 查询,admission因为这是用户字符串的子字符串。就像是:

SELECT keyword FROM table WHERE (keyword is a substring of 'Tell me about admission info')

提前致谢。

4

3 回答 3

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 小提琴演示

于 2013-09-15T07:31:21.620 回答
2

这工作正常,使用REGEXP

SELECT  keyword 
FROM    table 
WHERE   'Tell me about admission info' REGEXP keyword;

但这项工作只有在keyword不包含正则表达式的转义时才有效......

keyword即当只包含字母、数字、空格等时,这将正常工作。

于 2013-09-15T11:06:06.643 回答
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小提琴..

于 2013-09-15T10:35:48.043 回答