我的列通常只有数字(有时是字母,但这并不重要)。
如何让它自然排序?
目前的排序如下:{1,10,11,12,2,3,4,5,6,7,8,9}
我希望它像这样排序:{1,2,3,4,5,6,7,8,9,10,11,12}
答案 0 :(得分:7)
IsNumeric“已损坏”,ISNUMERIC(CHAR(13))返回1,CAST将失败。
使用ISNUMERIC(textval +'e0')。最终代码:
ORDER BY
PropertyName,
CASE ISNUMERIC(MixedField + 'e0') WHEN 1 THEN 0 ELSE 1 END, -- letters after numbers
CASE ISNUMERIC(MixedField + 'e0') WHEN 1 THEN CAST(MixedField AS INT) ELSE 0 END,
MixedField
您可以混合订单参数......
答案 1 :(得分:2)
施展它。另外,不要忘记使用IsNumeric来确保只返回数字(如果它们包含重要的字母;)。
SELECT textval FROM tablename
WHERE IsNumeric(textval) = 1
ORDER BY CAST(textval as int)
此外,转换为将保留最大值的数据类型。
如果您也需要结果集中的非数字,那么只需在之前或之后附加一个UNION查询,其中IsNumeric = 0(按您想要的顺序排序)。
答案 2 :(得分:-3)
你绑定使用:
'OrderBy ColumnName Asc'
在您的查询结束时。