Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

TSQL - Съединение с използване на пълен текст СЪДЪРЖА

Ако не сте против използването на временна таблица и EXEC (и осъзнавам, че това е голямо ако), можете да направите следното:

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

Това ще генерира заявка като:

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

И резултати като този:

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. Най-елегантният начин за генериране на пермутации в SQL сървър

  2. Какъв е максималният брой знаци, които nvarchar(MAX) ще съдържа?

  3. Списък с низове в SqlCommand през параметри в C#

  4. Как да задам базата данни по подразбиране в Sql Server от код?

  5. Как да завъртите динамично с дата като колона