我遇到了麻烦。如果在搜索语句中输入Single-Double引号会引发错误,我的sql语句如下:
SELECT UsersID,Sex,Age FROM dbo.UserBasicInfo WHERE
CONTAINS(PositionDesired,'"*"JAVA*"')
错误消息:
Msg 7630,Level 15,State 3,Line 1
全文搜索条件'JAVA*'
中'"*"JAVA*"'
附近的语法错误。
假设结果必须包含单双引号,如:"JAVA"PHP"
怎么办?
谢谢!
答案 0 :(得分:2)
你有一个额外的嵌入式双引号:
CONTAINS(PositionDesired,'"*"JAVA*"')
----------------------------^
这有效地提前终止了字符串,而SQL Server并不了解那些额外的内容。
应该(我认为,不是全文大师):
CONTAINS(PositionDesired,'"*JAVA*"')
但是,我认为这将消除错误,但不会返回您所追求的结果,因为忽略了标点符号。您可能必须使用CONTAINS
和LIKE
的组合,例如:
CONTAINS(PositionDesired,'JAVA')
AND PositionDesired LIKE '%"JAVA"%'
或者您添加的新要求:
CONTAINS(PositionDesired,'JAVA PHP')
AND PositionDesired LIKE '%"JAVA"PHP%"'
在LIKE
子句中,您不必担心双引号的转义或加倍,因为它不是字符串分隔符。
希望CONTAINS
子句首先过滤结果,但即使在正常查询中也不能保证短路或评估顺序;我不知道有关全文和标准过滤器的查询。