自然排序为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

上一篇: Natural sort for SQL Server?

下一篇: Java Message Service and Haskell