【发布时间】:2015-06-18 17:58:15
【问题描述】:
我的项目表的大小如下:
1sq.mm.
1.5sq.mm.
0.5sq.mm.
2.5sq.mm.
0.75sq.mm.
4sq.mm.
20mm
25mm
20mtr
75mm x 50mm
100mm x 50mm
100mm x 100mm
75mm x 75mm
我想显示它有
0.5sq.mm.
0.75sq.mm.
1.5sq.mm.
2.5sq.mm.
4sq.mm.
20mm
20mtr
25mm
75mm x 50mm
75mm x 75mm
100mm x 50mm
100mm x 100mm
我尝试了以下 sql 查询,但出现错误
'Conversion failed when converting the varchar value '1 sq.mm.' to data type int.'
SQL查询:
select * from Items
order by CAST(SUBSTRING(Sizes, PATINDEX('%[0-9]%', Sizes), LEN(Sizes)) AS INT)
【问题讨论】:
-
一切都是平方毫米吗?如果不是,您如何根据单位定义订单?
-
Alphanumeric Sort 的可能重复项
-
@Supreethsup:由于这些字符串是大小列的一部分,我猜它们是大小单位,这意味着
0.5sq.mm可能与0.5pcs不同。将数据分解为 numeric 和 varchar 值相当容易,但根据不同的单位计算正确的顺序可能有点棘手。顺便说一句,您永远不应该保留这样的混合数据。如果可能,请将大小和单位分开到不同的列中。 -
@ZoharPeled 重申 Zohar 所说的话,如果可能的话,有两列,大小和单位。
-
20sq.mm 更大。还是20毫米?这是两个完全不同的维度。
标签: sql sql-server sql-server-2008 sql-server-2012