将nvarchar列排序为整数

Sel*_*irK 3 t-sql sql-server sorting

我有混合数据i nvarchar列(单词和数字).这是以数字顺序对此列中的数据进行排序的最快方法.

结果示例:

  • 1
  • 2
  • 3
  • ...
  • 10
  • 11
  • ...
  • AAAA
  • AAAB
  • b
  • BA
  • BA
  • ...

ang*_*son 11

用这个:

ORDER BY
    CASE WHEN ISNUMERIC(column) = 1 THEN 0 ELSE 1 END,
    CASE WHEN ISNUMERIC(column) = 1 THEN CAST(column AS INT) ELSE 0 END,
    column
Run Code Online (Sandbox Code Playgroud)

这按预期工作.


注意:你说最快的方式.这个sql对我来说很快就会产生,但是执行计划显示了一个表扫描,然后是一个标量计算.这可能会产生一个临时结果,其中包含该列的所有值以及ISNUMERIC结果的一些额外临时列.它可能没有快速执行.