但与此同时,引号如果被替换,则会破坏查询。
我有这个问题:
SELECT * FROM CONTACT1 WHERE CONTAINS(COMPANY, N'Aktie')
这不会返回任何结果。但是,如果我将此查询更改为...
SELECT * FROM CONTACT1 WHERE CONTAINS(COMPANY, N'"*Aktie*"')
现在我得到了我实际期待的结果。我认为这是因为使用星号作为通配符,虽然我不明白为什么引号会解决问题。此外,如果我将此代码放在存储过程后面并传递完全相同的参数,"*Aktie*"
,我将收到一条错误消息:
Syntax error near '"' in the full-text search condition '"'.
为什么呢?我没有SQL开发,但我需要使用全文搜索作为我当前功能的一部分,我无法找到任何具体的答案。
" Aktie"是瑞典语单词的一部分,但瑞典单词应该被英语单词断言者识别。
根据要求,SProc的代码。
CREATE PROCEDURE gr_fulltextsearch
@query nvarchar
AS
SELECT * FROM CONTACT1 WHERE CONTAINS(COMPANY, @query)
GO
测试代码:
EXEC gr_fulltextsearch @query='"*Aktie*"'
> Syntax error near '"' in the full-text search condition '"'.
SELECT * FROM CONTACT1 WHERE CONTAINS(COMPANY, N'"*Aktie*"')
> (result set of CONTACT1)
答案 0 :(得分:0)
您的存储过程应如下所示:
CREATE PROCEDURE gr_fulltextsearch
@query nvarchar(100)
AS
SELECT * FROM CONTACT1 WHERE CONTAINS(COMPANY, @query)
GO
如果您使用(n)varchar
,它将被解释为(n)varchar(1)
,因此您的所有过程和CONTAINS获取都是'“',因此错误消息!您应该将值100调整为某个值,即更适合您的需求。
看,一点也不令人失望! : - )