SQLSERVER全文索引的一个BUG

在产品开发中,需要用到数据库全文索引特性,于是对SQLServer数据库的表建立了全文索引,如对资源收集来源表进行全文索引,表结构如下:

create table res_original
(
 res_id bigint,
 res_title varchar(100),
 res_content varchar(8000)
)

至于如何建立全文索引,请看上一篇BLOG. 现在要对 res_title 和 res_content 二个字段都开启全文索引,在查询时用如下语句查:

select * from res_original a
where CONTAINS(a.*, @keyword)

我希望在开启全文索引的二个字段中都查找, 其中, @keyword 为外部传入的查询内容. 一切工作正常,但是,如果 @keyword 的内容为列 res_title 的某一行的全部内容时,则查询

不到此行数据, 如:假设在 res_title 列中有一行内容为 "SQLSERVER数据库全文索引示例", 而 @keyword 的内容正好也为 "SQLSERVER数据库全文索引示例" 时, 则查询结果中是

没有此行数据的, 但用如下语句能查到:

select * from res_original a
where res_title = @keyword

这就说明表中是实实在在存在要查的数据, 当然,全文索引相关的一切工作配置都没问题. 在上面查询示例中, 如果去掉 "SQLSERVER数据库全文索引示例" 中的 最后一个字, 变为

"SQLSERVER数据库全文索引示", 传给 @keyword 来查询, 是能查询此行数据的. 经过多次测试, 感觉这是 SQLServer(2000以上)的一个BUG, 或者是另有说法,但本人不得而知.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值