简体   繁体   English

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

[英]How to sort a column in ascending order where the column contains varchar and numeric, using SQL?

Actually my column is in varchar, and it has numeric and varchar type data, i just wanted to sort numeric first then varchar type. 实际上我的列在varchar中,它有数字和varchar类型的数据,我只想先对数字进行排序,然后是varchar类型。

I refered and got this: 我提到并得到了这个:

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

It works, but why we need to use ELSE 9999999 here, instead what we can replace...? 它有效,但为什么我们需要在这里使用ELSE 9999999 ,而不是我们可以取代......?

Any solution for this...! 任何解决方案......!

You could use: 你可以使用:

SELECT *
FROM tab
ORDER BY IIF(TRY_CAST(val AS INT) IS NULL, 1, 0),TRY_CAST(val AS INT);

DBFiddle Demo DBFiddle演示

You can try this as an alternative solution. 您可以尝试将其作为替代解决方案。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM