SQL Server的自然排序?

Mal*_*ist 8 t-sql sql-server natural-sort

我有一个通常只有数字的列(有时它是字母,但这并不重要).

我怎样才能使它自然排序?

目前的排序如下:{1,10,11,12,2,3,4,5,6,7,8,9}

我希望它像这样排序:{1,2,3,4,5,6,7,8,9,10,11,12}

DiG*_*iGi 8

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
Run Code Online (Sandbox Code Playgroud)

您可以混合订单参数......