如何使用SQL对列包含varchar和numeric的升序排序列?

时间:2018-05-28 07:28:31

标签: sql sql-server

实际上我的列在varchar中,并且它有数字和varchar类型的数据,我只想先对数字进行排序,然后是varchar类型。

我提到并得到了这个:

 SELECT
 ...
ORDER BY
  CASE 
    WHEN ISNUMERIC(value) = 1 THEN CONVERT(INT, value) 
    ELSE 9999999 -- or something huge
  END,
  value

它有效,但为什么我们需要在这里使用ELSE 9999999,而不是我们可以替换的内容......?

任何解决方案......!

2 个答案:

答案 0 :(得分:2)

您可以使用:

user.experience_set.all()

<强> DBFiddle Demo

答案 1 :(得分:1)

您可以尝试将其作为替代解决方案。

SELECT
...
ORDER BY
  ISNUMERIC(value) DESC
  , CASE 
    WHEN ISNUMERIC(value) = 1 THEN CONVERT(INT, value) 
  END
  ,value