5

我有一个SQL Server 2008数据库,全文索引设置为用于搜索的一个表列。SQL Server全文没有考虑到前导零

当试图使用CONTAINS子句对以下条件执行对查询的查询:“003”时,它忽略前导零并返回匹配“3”的所有行。

我们正在努力考虑搜索的前导零,任何想法?

(全文的清单是空的)。

UPDATE:查询

SELECT * FROM Table 
WHERE CONTAINS(SearchIndex, '"003*"') 
+0

向我们显示您的查询。 –

+0

查询的输出是什么?你说它返回所有匹配“3”的行,但是它是否也返回带有前导零的行?普通的SELECT * FROM Table where where SearhIndex LIKE'003%'是否有效? – TheBoyan

+0

确实返回带有前导零的那些和没有它们的那些。 – luisporras

回答

0

我前一段时间有过这样类似的问题。

也许一种方法可能是通过全文搜索选择几个结果,然后从这些结果中选择特定结果。但也许可以有更好的解决方案。

我试过这种方法,它实际上工作。它也工作很多,然后只选择该值。

0

我遇到了同样的问题,发现问题与全文解析器处理前导0的方式有关。 This post帮助我更好地理解。如果您使用sys.dm_fts_parser来检查全文解析器如何解析具有前导0的数字,则可以自己查看问题。

我真的希望微软允许这个'功能'关闭。其他答案中提到的解决方法效果很好,但是,不容易基于多个列进行匹配,例如各种全文搜索功能。