搜索以X&开头的字符串Y返回0结果MySQL

时间:2013-04-05 15:30:34

标签: mysql

QUERY:

 SELECT *
 FROM MyTable
 WHERE SomeCol LIKE '%X & Y%'
即使我的表包含SomeCol = 'X & Y Some More Text'

的行,

也不会返回结果

如果我只是搜索'%Z & J%',则返回1行但在该记录中SomeCol = 'Some Preceeding Text Z & J'

所以基本上它返回0行,如果&符号位于带空格的字符串的开头,但如果它位于中间或末尾则返回正确的行。

为什么会发生这种情况?

注意:请注意%X & Y%只是一个搜索字符串,我的代码可能会搜索其他字符串,例如纯字符串'%some text%'

1 个答案:

答案 0 :(得分:3)

我可以想到两种可能性:

1)你的搜索字符串'X& Y'在&符号和字母之间包含的数量与数据库不同。

2)有关在数据库(或搜索字词)中对文字字符串进行编码以及数据实际上是X & Y而不是X & Y的事情。在HTML页面中对&符号进行编码是很常见的。

请注意,column LIKE '%search-term%'的表现会非常糟糕。这种搜索永远不会使用索引。如果该项目旨在扩大规模,您可能需要调查全文搜索。