簡體   English   中英

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

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

實際上我的列在varchar中,它有數字和varchar類型的數據,我只想先對數字進行排序,然后是varchar類型。

我提到並得到了這個:

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

它有效,但為什么我們需要在這里使用ELSE 9999999 ,而不是我們可以取代......?

任何解決方案......!

你可以使用:

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

DBFiddle演示

您可以嘗試將其作為替代解決方案。

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