2017-04-20 134 views
0

一個nvarchar場我使用下面的查詢的SQL命令字段訂購在SQL

Select Distinct x From t where c=1 order by x asc 

X是一個nvarchar列,但目前列有以下值

enter image description here

無論如何訂購的價值是這樣的:

沒有獎,1,2,3,4,5,6,7,8,9,10

+3

什麼你正在與rdbms合作? –

+0

rdbms這是什麼? – Sora

+0

標記您正在使用的SQL風格... – Sankar

回答

1

在SQL Server 2012+可以使用try_cast,但你將不得不改變distinctgroup by

SELECT x 
FROM t 
WHERE c=1 
GROUP BY x 
ORDER BY Try_Cast(x as int) 

對於老版本,你可以使用union:

SELECT x 
FROM 
(
    SELECT x, CAST(x as int) as sort 
    FROM t 
    WHERE c = 1 
    AND ISNUMERIC(x) = 1 

    UNION 

    SELECT x, NULL 
    FROM t 
    WHERE c = 1 
    AND ISNUMERIC(x) = 0 
) as distinctX 
ORDER BY sort 
+0

如果我使用舊版本的sql server,該怎麼辦? – Sora

+0

@sora讓我們知道您的sql server版本 – Sankar

+0

sql server 2008 – Sora