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
我有一个 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