2011-09-16 129 views
2

我有一個全文搜索結果的問題,我需要找到name列中包含「spray」的行,並且不包含description列中的「men」。SQL Server全文搜索問題

select top 10 ftt.RANK, ID, name, description 
from mod_product_all_fields 
INNER JOIN containstable(mod_product_all_fields,(name),' ("spray") ') as ftt 
    ON mod_product_all_fields.ID=ftt.[KEY] 
INNER JOIN containstable(mod_product_all_fields,(description),' not ("men") ') as ftt2 
    ON mod_product_all_fields.ID=ftt2.[KEY] 
ORDER BY ftt.RANK DESC 

此查詢不正確執行,調試器顯示我有近「不是(‘男’)」語法錯誤。

如果你對我的問題的解決方案,請告訴我

感謝

+0

[This might help](http://stackoverflow.com/questions/508449/how-to-implement-not-like-as-the-search-condition-for-containstablefull-text-que)。 –

回答

2

我的指針擴大到有關如何尋找NOT <a word>較早的答案,我想這應該做的伎倆:

select top 10 ftt.RANK, ID, name, description 
from mod_product_all_fields 
INNER JOIN containstable(mod_product_all_fields,(name),' ("spray") ') as ftt 
    ON mod_product_all_fields.ID=ftt.[KEY] 
LEFT JOIN containstable(mod_product_all_fields,(description),' ("men") ') as ftt2 
    ON mod_product_all_fields.ID=ftt2.[KEY] 
WHERE 
    ftt2.KEY IS NULL -- Eliminate matches on "men" 
ORDER BY ftt.RANK DESC 
+0

不起作用 感謝您的回覆 – Zakaria