リンクインデックスサーバーへのSQLクエリがワイルドカードで機能しない
-
22-07-2019 - |
質問
sprocで使用する次のステートメント(検索フレーズ '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*'')
2番目の選択:
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は、リンクされたインデックスサーバー(= Microsoft 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