【发布时间】:2019-06-09 20:06:56
【问题描述】:
让我们考虑 User.Note = 'Version:3.7.21.1'
SELECT * FROM [USER] WHERE CONTAINS(NOTE, '"3.7.2*"')
=> 返回一些东西
SELECT * FROM [USER] WHERE CONTAINS(NOTE, '"3.7*"')
=> 返回无
如果 User.Note = 'Version:3.7.21'
SELECT * FROM [USER] WHERE CONTAINS(NOTE, '"3.7*"')
=> 返回一些东西
如果 User.Note = 'Version:3.72.21'
SELECT * FROM [USER] WHERE CONTAINS(NOTE, '"3.7*"')
=> 返回无
我不知道它是如何工作的。当我搜索“3.7 *”时,它应该总是返回一些东西。
你知道这背后的逻辑是什么吗?
PS:如果我把数字换成字母就没有问题了。
【问题讨论】:
-
你可以使用 like '%3.7.2%' 而不是 contains
-
谢谢,但我想用“CONTAINS”
-
您的数据中是否有实际的双引号?
-
不,但我必须在双引号中加上 * docs.microsoft.com/en-us/sql/t-sql/queries/…
-
如果您希望经常处理版本号,那么您可能需要添加一个带有“规范化”版本号的列,该版本号将正确排序(“0001.0005.0100.0095”,这样您就找不到"10" This 问题适用。
标签: sql sql-server tsql full-text-search contains