为什么我不能使用任何变体的 "o*" 来使用 SQL 的 Contains() 函数?
- 论坛
- 为什么我不能使用任何变体的 "o*" 来使用 SQL 的 Contains() 函数?
10 浏览
为什么我不能使用任何变体的 "o*" 来使用 SQL 的 Contains() 函数?
我有一个名为'Foo'的表,其中有两条记录如下:
int | nvarchar(4000) Col0 | Col1 ------|-------------- 00001 | 'Bar of SNAFU' 00002 | 'Bar SNAFU'
我想要返回含有'of'分隔符的记录,所以我构建了一个类似下面的CONTAINS子句:
SELECT * FROM Foo WHERE CONTAINS(*, '"Bar of*"') 0行返回
如果我将其替换为LIKE子句,它就能正常工作:
SELECT * FROM Foo WHERE Col1 LIKE 'Bar of%' 返回1行
如果我在CONTAINS子句的搜索条件中去掉第二个单词,它会返回两行,符合预期:
SELECT * FROM Foo WHERE CONTAINS(*, '"Bar *"') 返回2行
问题只发生在我在CONTAINS子句中包含任何形式的"o*"时。我可以在CONTAINS子句中使用多个单词并检索到正确的行(通过另一个查询进行验证),所以空格不是问题,也不会发生在其他字母上。我尝试重新格式化CONTAINS以使用AND关键字连接各个项("Bar*" AND "of*"),但结果相同。我需要返回只有一行的结果,并且该表相当大(数十万行),所以我希望利用CONTAINS子句,而不是切换到LIKE。