我一直在试图弄清楚如何使用 MySQL 进行查询,以检查$haystack
某个列中的值(字符串)是否包含某些数据(字符串$needle
),如下所示:
SELECT *
FROM `table`
WHERE `column`.contains('{$needle}')
在 PHP 中,该函数被调用substr($haystack, $needle)
,所以可能:
WHERE substr(`column`, '{$needle}')=1
我一直在试图弄清楚如何使用 MySQL 进行查询,以检查$haystack
某个列中的值(字符串)是否包含某些数据(字符串$needle
),如下所示:
SELECT *
FROM `table`
WHERE `column`.contains('{$needle}')
在 PHP 中,该函数被调用substr($haystack, $needle)
,所以可能:
WHERE substr(`column`, '{$needle}')=1
其实很简单:
SELECT *
FROM `table`
WHERE `column` LIKE '%{$needle}%'
%
是任何字符集(无、一个或多个)的通配符。请注意,这在非常大的数据集上会变慢,因此如果您的数据库增长,您将需要使用全文索引。
WHERE `column` LIKE '%$needle%'
我的LOCATE
在mysql中使用:
定位(substr,str),定位(substr,str,pos)
此函数是多字节安全的,并且仅当至少一个参数是二进制字符串时才区分大小写。
在你的情况下:
SELECT * FROM `table`
WHERE LOCATE('{$needle}', `column`) > 0
除了@WoLpH 的答案。
使用LIKE
关键字时,您还可以限制字符串匹配的方向。例如:
如果您正在寻找以您的开头的字符串$needle
:
... WHERE column LIKE '{$needle}%'
如果您正在寻找以 结尾的字符串$needle
:
... WHERE column LIKE '%{$needle}'
请注意,这是危险的:
WHERE `column` LIKE '%{$needle}%'
先做:
$needle = mysql_real_escape_string($needle);
因此它将防止可能的攻击。