Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

TSQL - Gabung menggunakan teks lengkap CONTAIN

Jika Anda tidak menentang penggunaan tabel temp, dan EXEC (dan saya menyadari itu besar jika), Anda dapat melakukan hal berikut:

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

Ini akan menghasilkan kueri seperti:

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

Dan hasilnya seperti ini:

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 Server BCP Ekspor di mana koma di bidang SQL

  2. Apa yang dimaksud dengan kunci baris, halaman, dan tabel? Dan kapan mereka diakuisisi?

  3. Mendapatkan data dengan rangkaian karakter UTF-8 dari server MSSQL menggunakan ekstensi PHP FreeTDS

  4. Apakah mungkin untuk mendapatkan alamat mac menggunakan prosedur tersimpan?

  5. Bagaimana cara mencetak GETDATE() di SQL Server dengan waktu milidetik?