sql >> Databáze >  >> RDS >> Sqlserver

TSQL – spojení pomocí fulltextového CONTAINS

Pokud nejste proti použití dočasné tabulky a EXEC (a uvědomuji si, že je to velké if), můžete udělat následující:

DECLARE @KeywordList VARCHAR(MAX), @KeywordQuery VARCHAR(MAX)
SELECT @KeywordList = STUFF ((
        SELECT '"' + Keyword + '" OR '
        FROM FTS_Keywords
        FOR XML PATH('')
    ), 1, 0, '')

SELECT  @KeywordList = SUBSTRING(@KeywordList, 0, LEN(@KeywordList) - 2)
SELECT  @KeywordQuery = 'SELECT RecordID, Document FROM FTS_Demo_2 WHERE CONTAINS(Document, ''' + @KeywordList +''')'

--SELECT @KeywordList, @KeywordQuery

CREATE TABLE #Results (RecordID INT, Document NVARCHAR(MAX))

INSERT INTO #Results (RecordID, Document)
EXEC(@KeywordQuery)

SELECT * FROM #Results

DROP TABLE #Results

To by vygenerovalo dotaz jako:

SELECT   RecordID
        ,Document 
FROM    FTS_Demo_2 
WHERE CONTAINS(Document, '"red" OR "green" OR "blue"')

A výsledky jako tento:

RecordID    Document
1   one two blue
2   three red five


  1. Vyžaduje se připojit ke 2 stolům se svými FK u 3. stolu

  2. Posledních x příspěvků na blogu – ale pouze jednou na uživatele

  3. Jak mohu v SQL vygenerovat všechny možné jedinečné kombinace 5!56?

  4. Vývoj odolnosti vůči chybám v PostgreSQL:Synchronní závazek