我一直在试图弄清楚如何用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
当前回答
除了来自@WoLpH的答案。
当使用LIKE关键字时,你还可以限制字符串匹配的方向。例如:
如果您正在寻找以$needle开头的字符串:
... WHERE column LIKE '{$needle}%'
如果你正在寻找以$needle结尾的字符串:
... WHERE column LIKE '%{$needle}'
其他回答
你可能正在寻找find_in_set函数:
Where find_in_set($needle,'column') > 0
这个函数的作用类似于PHP中的in_array函数
请注意,这是危险的:
WHERE `column` LIKE '%{$needle}%'
第一:
$needle = mysql_real_escape_string($needle);
这样可以防止可能的攻击。
除了来自@WoLpH的答案。
当使用LIKE关键字时,你还可以限制字符串匹配的方向。例如:
如果您正在寻找以$needle开头的字符串:
... WHERE column LIKE '{$needle}%'
如果你正在寻找以$needle结尾的字符串:
... WHERE column LIKE '%{$needle}'
其实很简单:
SELECT *
FROM `table`
WHERE `column` LIKE '%{$needle}%'
%是任意字符集的通配符(无、一个或多个)。请注意,这可能会在非常大的数据集上变慢,所以如果你的数据库增长,你就需要使用全文索引。
WHERE `column` LIKE '%$needle%'