Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

TSQL - Một liên kết sử dụng CONTAINS toàn văn

Nếu bạn không chống lại việc sử dụng bảng tạm thời và EXEC (và tôi nhận thấy đó là một if lớn), bạn có thể làm như sau:

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

Điều này sẽ tạo ra một truy vấn như:

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

Và kết quả như thế này:

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. Ví dụ về ROUND () trong SQL Server

  2. Bao gồm bảng &lược đồ khi liệt kê các cột nhận dạng trong cơ sở dữ liệu máy chủ SQL

  3. Ghi đè các hàng bị ảnh hưởng trong SQL Server bằng ExecuteNonQuery?

  4. Cảnh báo tác nhân SQL Server

  5. Chuỗi kết nối cho SQL Server 2008 R2 Phiên bản cho SQL Server Express