SQL 数值的全文搜索行为

SQL full text search behavior on numeric values

我有一个 table 大约有 2 亿条记录。其中一列定义为 varchar(100),它包含在全文索引中。大多数值都是数字。只有少数不是数字。 问题是它不能正常工作。例如,如果一行包含值“123456789”,而我查找“567”,则不会 returning 这一行。它只会显示 return 行,其中的值正好是“567”。 我做错了什么?

sql 服务器 2012.

谢谢。

99% 您在 LIKE 子句中搜索的字符串前后缺少 %
西斯:

SELECT * FROM t WHERE att LIKE '66'

等同于使用WHERE att = '66'

如果你写:

SELECT * FROM t WHERE att LIKE '%66%'

将return你所有包含2'sixes'的行一个接一个

你可以这样做:

....your_query.... LIKE '567%' ;

这将 return 所有在开头、结尾或中间某处具有数字 567 的行。

问题可能是您使用了错误的工具,因为全文查询执行 linguistic 搜索并且您似乎想使用简单的 "like" 条件。

如果您想获得满足您需求的解决方案,那么您可以 post DDL+DML+'desired result'

全文搜索不支持前导通配符

在我的设置中,这些 return 相同

SELECT *
  FROM [dbo].[somelogtable]
  where CONTAINS (logmessage, N'28400')

SELECT *
  FROM [dbo].[somelogtable]
  where CONTAINS (logmessage, N'"2840*"')

这给出了零行

SELECT *
  FROM [dbo].[somelogtable]
  where CONTAINS (logmessage, N'"*840*"')

你必须使用 LIKE 或一些 fancy trigram approach