SQL查询链接索引服务器不会工件W通配符
-
22-07-2019 - |
题
此语句我在一个存储过程(其中搜索短语“reiseportal *”是一个参数)的使用不与通配符工作,因为我确认:
DECLARE @strSQL NVARCHAR(MAX)
SELECT @strSQL= 'SELECT FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where contains
('SELECT @strSQL=@strSQL + CHAR(39) + CHAR(39)+ 'reiseportal*' + CHAR(39) + CHAR(39)+')'
SELECT @strSQL='SELECT DISTINCT DOC.ID_Kandidat, IDXS.* FROM
OPENQUERY([GRIP-SERVER],'+ CHAR(39) + @strSQL + CHAR(39) +') AS IDXS INNER JOIN
tblK_Dokumente AS DOC
ON DOC.Link = IDXS.[FileName]
ORDER BY ID_Kandidat'
EXEC sp_executesql @statement = @strSQL
这些是@strSQL变量的内容:
后第一选择:
select FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where
contains(''reiseportal*'')
第二选择:
SELECT DISTINCT DOC.ID_Kandidat, IDXS.* FROM
OPENQUERY([GRIP-SERVER],'select FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where
contains(''reiseportal*'')') AS IDXS INNER JOIN
tblK_Dokumente AS DOC
ON DOC.Link = IDXS.[FileName]
ORDER BY ID_Kandidat'
GRIP-SERVER是链接的索引服务器(=微软Server 2003中 - 我们的文件服务器)。
我不明白这一点......它返回的结果与“reiseportals”,而不是“reiseportal *”或“reiseportal%”。你有任何提示我吗?
您的帮助是极大的赞赏,非常感谢!
解决方案
我发现自己的答案。
的问题不是通配符,但串标记。索引服务器不使用单引号,但引号。所以,正确的SQL应该是这样:
SELECT DISTINCT DOC.ID_Kandidat, IDXS.* FROM
OPENQUERY([GRIP-SERVER],'select FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where
contains(''"reiseportal*"'')') AS IDXS INNER JOIN
tblK_Dokumente AS DOC
ON DOC.Link = IDXS.[FileName]
ORDER BY ID_Kandidat
不隶属于 StackOverflow