【发布时间】:2012-08-14 14:28:45
【问题描述】:
我正在尝试查询一个字符串以匹配数据库中的某个范围。该表有 2 列 FromCode 和 ToCode。
以下是示例数据(假设表名为CodeList):
FromCode ToCode
IV1 0AA IV9 9ZZ
IV10 0AA IV28 9ZZ
IV30 0AA IV32 9ZZ
IV36 0AA IV36 9ZZ
IV40 0AA IV49 9ZZ
IV51 0AA IV56 9ZZ
IV63 0AA IV63 9ZZ
所以,如果我运行查询
SELECT *
FROM CodeList
WHERE FromCode <= 'IV1 1AB' AND ToCode >= 'IV1 1AB'
它会返回结果
IV1 0AA IV9 9ZZ
这是正确的。但是,当我运行这个时:
SELECT *
FROM CodeList
WHERE FromCode <= 'IV2 1AB' AND ToCode >= 'IV2 1AB'
我得到的结果是
IV1 0AA IV9 9ZZ
IV10 0AA IV28 9ZZ
因此,对于人类来说,字符串 IV2 2AB 在 IV1 0AA - IV9 9ZZ 内而不是 IV10 0AA - IV28 9ZZ。
如果有人能提出更好的方法来搜索数据,我们将不胜感激。另外,我运行它的引擎是 SQL Server 2012。
非常感谢!
【问题讨论】:
-
分割是从左到右。IV2 (2) 比 iv10 (1) 大。
标签: tsql sql-server-2012