0

询问:

 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%'

4

1 回答 1

3

我能想到两种可能:

1)您的搜索字符串“X & Y”在与号和字母之间包含的空格数量与您的数据库不同。

2)在数据库中(或在您的搜索词中)编码您的文本字符串并且数据实际上说 X & Y而不是X & Y. 在 HTML 页面中对 & 符号进行编码是很常见的。

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

于 2013-04-05T15:44:45.740 回答