2016-08-11 46 views
1

我有與像C72, C4, C54, C39「C」,前綴值的列字母數字值排序列當我排序此desc中順序,它變,與數據表

C72, C54, C4, C39 

但我wan't它是

C72, C54, C39, C4 

我該怎麼做?

+0

您使用的是什麼版本的SQL?列中的每個值的格式是「C###',即單個字母」C「後跟任意數字的數字嗎? –

+0

什麼是DBMS? – jonju

+0

@TimBiegeleisen是每個值與'C' – Nis

回答

0

假設您使用的是MSSQL SERVER,您可以通過使用PATINDEX & CASTCONVERT來實現。只檢索數字部分從每個值使用PATINDEX子串並使用CAST投檢索值INT,如果你使用的是SQL Server中使用Order By

Select * 
From 
    Tablename 
ORDER BY 
    CAST(substring([colname],PATINDEX('%[0-9]%',[colname]),len([colname])) AS INT) DESC 
0

如果您想要按數字順序按C這個數字降序排列,那麼你就可以把數字的字符串打成一個整數並投射成一個整數:

SELECT col 
FROM yourTable 
ORDER BY CAST(SUBSTRING(col, 2, LEN(col) - 1) AS INT) DESC 

此答案假定列中的每個值都以字母C作爲前綴。

+0

太感謝你了,但問題是我得到的數據如我所料,通過查詢檢索一段時間,但在數據表中出現了同樣的問題。 – Nis

+0

你能詳細說明你的意思嗎? –

+0

我想在數據表中實現相同的排序,它隨機化我的數據,但沒有用,但我通過查詢檢索時排序它。 – Nis