MySQL查询String包含
我一直想弄清楚如何使用MySQL来查询某个列中的值(string $haystack )是否包含某些数据(string$needle ),如下所示: 
 mysql_query(" SELECT * FROM `table` WHERE `column`.contains('{$needle}') "); 
 在PHP中,这个函数被称为substr($haystack, $needle) ,所以也许: 
 WHERE substr(`column`, '{$needle}')=1 
	
其实很简单:
 mysql_query(" SELECT * FROM `table` WHERE `column` LIKE '%{$needle}%' "); 
  %是任何字符的通配符。 请注意,对于非常大的数据集,这可能会变慢,所以如果数据库增长,则需要使用全文索引。 
使用:
 SELECT * FROM `table` WHERE INSTR(`column`, '{$needle}') > 0 
参考:
- INSTR
 WHERE `column` LIKE '%$needle%' 
 我在mysql中使用LOCATE : 
LOCATE(substr,str),LOCATE(substr,str,pos)
这个函数是多字节安全的,只有当至less有一个参数是二进制string时才是大小写敏感的。
在你的情况下:
 mysql_query(" SELECT * FROM `table` WHERE LOCATE('{$needle}','column') > 0 "); 
除了@WoLpH的回答。
 使用LIKE关键字时,也可以限制string匹配的方向。 例如: 
 如果您正在查找以$needle开头的string: 
 ... WHERE column LIKE '{$needle}%' 
 如果您正在查找以$needle结尾的string: 
 ... WHERE column LIKE '%{$needle}' 
注意这是危险的:
 WHERE `column` LIKE '%{$needle}%' 
先做:
 $needle = mysql_real_escape_string($needle); 
所以它会防止可能的攻击。
 您可能正在寻找find_in_set函数: 
 Where find_in_set($needle,'column') > 0 
 这个函数在PHP中像in_array函数一样