我一直在试图弄清楚如何用MySQL进行查询,检查某个列中的值(字符串$haystack)是否包含某些数据(字符串$needle),就像这样:

SELECT *
FROM `table`
WHERE `column`.contains('{$needle}')

在PHP中,这个函数被称为substr($haystack, $needle),所以可能:

WHERE substr(`column`, '{$needle}')=1

当前回答

你可能正在寻找find_in_set函数:

Where find_in_set($needle,'column') > 0

这个函数的作用类似于PHP中的in_array函数

其他回答

WHERE `column` LIKE '%$needle%'

我的是在mysql中使用LOCATE:

LOCATE(substr,str), LOCATE(substr,str,pos)

此函数是多字节安全的,并且仅当至少有一个参数是二进制字符串时才区分大小写。

在你的情况下:

SELECT * FROM `table`
WHERE LOCATE('{$needle}', `column`) > 0

你可能正在寻找find_in_set函数:

Where find_in_set($needle,'column') > 0

这个函数的作用类似于PHP中的in_array函数

Use:

SELECT *
  FROM `table`
 WHERE INSTR(`column`, '{$needle}') > 0

参考:

INSTR

除了来自@WoLpH的答案。

当使用LIKE关键字时,你还可以限制字符串匹配的方向。例如:

如果您正在寻找以$needle开头的字符串:

... WHERE column LIKE '{$needle}%'

如果你正在寻找以$needle结尾的字符串:

... WHERE column LIKE '%{$needle}'