[英]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);
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.