包含()函数与数字串?

时间:2011-11-04 14:46:53

标签: sql sql-server sql-server-2008 tsql full-text-search

对于某些背景信息,我正在创建一个应用程序,它会搜索几个索引表以检索某些记录。谷歌说它并不是一件非常复杂的事情,但除了这个奇怪的问题外,它对它所服务的目的来说已经足够了。

我正在使用Contains()函数,并且它非常顺利,除非搜索包含数字字符串。现在,我只传入一个字符串 - 无法传递数值数据类型 - 只有字符。我们正在搜索一系列电子邮件,每个电子邮件都会在从工作流程中删除时附加自定义ID。因此,在测试时,我们决定通过数字字符串进行搜索。

在我们的测试中,我们隔离了一个0042600006号,它只属于一个电子邮件主题。但是,在使用我们的查询时,我们会收到00426000010042600002等的结果。查询如下(有一些通用列代表):

SELECT description, subject FROM tableA WHERE CONTAINS((subject), '0042600006')

我们尝试了所有可能的组合:'0042600006*''"0042600006"''"0042600006*"'

我认为这只是功能的限制,但我认为这可能是最好的答案。提前致谢。

3 个答案:

答案 0 :(得分:1)

最近问了同样的问题。请查看某人留给我的深刻答案here

这个用户所说的基本上是关闭噪音词(微软在全文搜索中将整数0-9包含为噪音)。希望你能像我现在一样使用这个很棒的工具和整数!

答案 1 :(得分:1)

尝试添加language 1033作为附加参数。这与我的解决方案有关。

SELECT description, subject FROM tableA WHERE CONTAINS((subject), '0042600006', language 1033)

答案 2 :(得分:-1)

尝试使用 SELECT描述,主题FROM tableA WHERE CONTAINS((subject),'%0042600006%')