【发布时间】:2015-04-15 13:52:33
【问题描述】:
好吧,假设我想过滤一个存储了 X.X.X 格式的版本号的表。
如果我只想过滤单个版本号,这很容易。
where version = '3.12.92'
举个例子。
但是,如果我正在寻找某个 RANGE 版本,例如从“2.21.23”到“3.12.92”,该怎么办?按版本范围过滤的最简单但可靠的解决方案是什么?
编辑:更改表格的格式为时已晚。该表已有数年历史,有数百万个条目。
【问题讨论】:
-
真正的解决方案是修复您的表格设计,然后您的搜索将是微不足道的。永远不要在单个列中组合多个值,您将永远无法将它们分开。如果您将版本的每个部分放在不同的列中,您可以轻松地做到这一点。
-
太晚了,我正在搜索的表有数百万个条目。
-
所有版本字符串的格式是否总是
x.y.z(三部分,两位小数)? -
最好的短期选择是获取一个临时表/派生表/表变量/cte,其中包含您范围内的每个版本并进行连接。从长远来看,我会寻找一个预置索引计算列,您可以在其中将它们编码为 int 或 big int,您可以在其中使用前导零并在其上放置索引。比如:“3.12.92”变成:“300120092”和1.2.3变成“100020003”
标签: sql-server