1. 程式人生 > >SqlServer varchar數據中類似於1.1.1.1這種值的排序方法

SqlServer varchar數據中類似於1.1.1.1這種值的排序方法

列名 現在 sel arch select 技術 小數點 serve varchar

select * from 表名
order by Convert(int,left(列名,charindex(‘.‘,列名+‘.‘)-1)) asc, 列名asc

charindex(‘.‘,列名) 查詢第一個.(點)在第幾位

技術分享圖片

charindex(‘.‘,列名+‘.‘) 給沒有數據在最後面加個.(點) 這樣可以讓第一位沒有小數點的數據也能查出來

技術分享圖片

left(列名,charindex(‘.‘,列名)) 查詢小數點左面值

技術分享圖片

left(列名,charindex(‘.‘,列名+‘.‘)) 在所有值後面加個.

技術分享圖片

left(列名,charindex(‘.‘,列名+‘.‘)-1) 查詢的值後面減少一位 就是把後面的點給去了

技術分享圖片

Convert(int,left(列名,charindex(‘.‘,列名+‘.‘)-1)) 取第一個小數點前面的值轉成int類型

技術分享圖片

Convert(int,left(列名,charindex(‘.‘,列名+‘.‘)-1)) asc 取小數點前面的值轉成int類型正排序 (但是現在排序有點不準)

技術分享圖片

Convert(int,left(列名,charindex(‘.‘,列名+‘.‘)-1)) asc, 列名asc 所以後面再用列名asc正排一下就完全可以了

技術分享圖片

SqlServer varchar數據中類似於1.1.1.1這種值的排序方法