SQL-Abfrage verknüpft Indexserver funktioniert nicht mit Wildcards
-
22-07-2019 - |
Frage
Diese Aussage, die ich in einem sproc verwenden (wo der Suchbegriff ‚* Reiseportal‘ ist ein Parameter) funktioniert nicht mit einem Platzhalter, wie ich erkannt:
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
das sind die Inhalte der @strSQL Variable:
nach dem 1. wählen:
select FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where
contains(''reiseportal*'')
2. wählen:
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 ist der verknüpfte Index Server (= Microsoft Server 2003 - unser Dateiserver).
Ich bekomme es nicht ... es gibt Ergebnisse mit „reiseportals“, aber nicht „Reiseportal *“ oder „Reiseportal%“. Haben Sie für mich irgendwelche Hinweise haben?
Ihre Hilfe wird sehr geschätzt, vielen Dank!
Lösung
fand ich die Antwort selbst.
Das Problem ist nicht der Platzhalter, aber der Zeichenfolge-Marker. Der Index-Server verwendet nicht Apostrophe aber Anführungszeichen. Also die richtige SQL sollte wie:
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