Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

TSQL - Złączenie za pomocą pełnotekstowego CONTAINS

Jeśli nie masz nic przeciwko używaniu tabeli tymczasowej i EXEC (a zdaję sobie sprawę, że jest to bardzo ważne), możesz wykonać następujące czynności:

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

Spowoduje to wygenerowanie zapytania takiego jak:

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

A wyniki takie:

RecordID    Document
1   one two blue
2   three red five


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. strumień plików na serwerze sql i C# dla aspx

  2. Jak mogę wyłączyć aktualizację tabeli dla wszystkich użytkowników?

  3. Eksportuj tabele (obiekty i dane) na podstawie wybranych kryteriów

  4. Jaka jest różnica między tabelą tymczasową a zmienną tabeli w programie SQL Server?

  5. Dlaczego warto korzystać z typu danych geograficznych SQL Server 2008?