0

我遇到了麻烦。如果在搜索语句中输入单双引号会引发错误,我的 sql 语句如下:

 SELECT UsersID,Sex,Age FROM dbo.UserBasicInfo WHERE 
       CONTAINS(PositionDesired,'"*"JAVA*"') 

错误信息:

Msg 7630, Level 15, State 3, Line 1'JAVA*'全文搜索条件附近出现语法错误'"*"JAVA*"'

假设结果必须包含单双引号,例如:"JAVA"PHP"如何做?谢谢 !

4

1 回答 1

2

您有一个额外的嵌入式双引号:

CONTAINS(PositionDesired,'"*"JAVA*"') 
----------------------------^

这有效地提前终止了字符串,并且 SQL Server 不理解那些额外的东西是什么。

应该是(我认为,不是全文大师):

CONTAINS(PositionDesired,'"*JAVA*"') 

但是,我认为这将消除错误,但不会返回您所追求的结果,因为标点符号被忽略了。您可能必须使用 and 的组合CONTAINSLIKE例如:

CONTAINS(PositionDesired,'JAVA')
  AND PositionDesired LIKE '%"JAVA"%'

或者对于您添加的新要求:

CONTAINS(PositionDesired,'JAVA PHP')
  AND PositionDesired LIKE '%"JAVA"PHP%"'

在该LIKE子句中,您不必担心转义或加倍双引号,因为它不是字符串分隔符。

希望该CONTAINS子句首先过滤结果,但即使在正常查询中也不能保证短路或评估顺序;我不知道带有全文和标准过滤器的查询。

于 2013-08-14T03:06:00.427 回答