自然排序为SQL Server?
我有一列通常只有数字(有时是字母,但这不重要)。
我怎样才能使它自然排序?
目前类似如下:{1,10,11,12,2,3,4,5,6,7,8,9}
我想要这样排序:{1,2,3,4,5,6,7,8,9,10,11,12}
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
您可以混合订购参数...
投它。 此外,不要忘记使用IsNumeric来确保只返回数字(如果它们包含字母,则很重要;)。
SELECT textval FROM tablename
WHERE IsNumeric(textval) = 1
ORDER BY CAST(textval as int)
另外,转换为将保存最大值的数据类型。
如果您还需要结果集中的非数字,则只需在之前或之后追加一个UNION查询,其中IsNumeric = 0(按您想要的顺序排列)。
你有绑定使用:
'OrderBy ColumnName Asc'
在查询结束时。
链接地址: http://www.djcxy.com/p/46607.html