Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

टीएसक्यूएल - एक पूर्ण-पाठ का उपयोग करके शामिल होता है CONTAINS

यदि आप एक अस्थायी तालिका का उपयोग करने के खिलाफ नहीं हैं, और 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. क्या मैं बीसीपी के साथ एक इनपुट एसक्यूएल फाइल निर्दिष्ट कर सकता हूं?

  2. टी-एसक्यूएल में टाइमस्टैम्प का मतलब सी # में क्या है?

  3. त्रुटि संदेश 4151 को ठीक करें "NULLIF के लिए पहले तर्क का प्रकार NULL स्थिरांक नहीं हो सकता क्योंकि SQL सर्वर में पहले तर्क के प्रकार को जानना होगा"

  4. sql डेटाबेस में तालिका के नए रिकॉर्ड देखें

  5. एसक्यूएल में डेटा पंक्तियों को जोड़ना और प्राप्त करना