2017-08-09 49 views
2

我運行使用CONTAINSTABLE語句像這樣的TSQL CONTAINSTABLE和通配符

CONTAINSTABLE(<Table A>, <TargetColumn>, '01100011') 

這給了我正確的結果TSQL查詢。但是,如果我使用

CONTAINSTABLE(<Table A>, <TargetColumn>, '0110001*') 

取而代之,我得到0結果。有人可以解釋我的原因嗎? AFAIK通配符是這樣支持的。

這是MSSQL Server上提前2008R2

感謝:-)

+0

您能否分享一下您的第一個陳述'01100011'的結果 一個'*'作爲'通配符',當您在* 01100011 *之後給*時,它的值爲' 01100011'後跟任何其他字符。 – Joby

+0

結果是

中的2行在中有'01100011'字符。我不明白爲什麼他們沒有被第二個聲明發現,最後一個被*代替(在我的情況下應該導致至少有相同的結果集)。 – Dave

+3

按照[docs](https://docs.microsoft.com/zh-cn/sql/relational-explorer.aspx)試試'CONTAINSTABLE(..,..,'「0110001 *」')'(介意雙引號)數據庫/搜索/查詢與 - 全文搜索#Prefix_Term)。 –

回答

0

按照Jeroen's comment,則需要用雙引號搜索項(單引號內)。

The documentation給出的例子CONTAINS (Description, '"top*"')接着說

如果文本和星號不用英文雙引號分隔,如CONTAINS (DESCRIPTION, 'top'),全文搜索不考慮星號是一個通配符。

在你的情況下,CONTAINSTABLE(<Table A>, <TargetColumn>, '"0110001*"')應該如你所料。