1. 程式人生 > >SQL SERVER 字串按數字排序

SQL SERVER 字串按數字排序

需求是這樣的:
資料庫表裡面有一個欄位型別是nvachar,存的值是數字和字元混合的,要實現先按數字排序,再按字母倒序。

思路:
考慮這個欄位的值是否是有規律可循的,把要按數字排序的部分轉換為數字,再把剩下的字元排序。

資料表是下面這樣的:

這裡寫圖片描述

LevelName就是那個數字和字母混合的欄位。
我這個表裡存的LevelName都是數字+單個字元的格式。於是可以把前面的部分轉換為數字,按數字排,剩下的部分按字母排。

語句這樣寫:

SELECT * FROM dbo.Level
ORDER BY CONVERT(INT, LEFT(LevelName, LEN(LevelName)-1
)) ASC, RIGHT(LevelName, 1) DESC

查詢結果:

這裡寫圖片描述

PS:4B 比 4A 小。