sql >> データベース >  >> RDS >> Sqlserver

TSQL-フルテキスト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. 1対多の関係に存在する数を数えます

    2. 複数挿入SQLOracle

    3. DoctrineQueryBuilderの式mysqlNOW()

    4. MySQL:nullによる平均化