2017-08-09 21 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*"')应该如你所料。