SqlServer varchar數據中類似於1.1.1.1這種值的排序方法
阿新 • • 發佈:2018-02-12
列名 現在 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這種值的排序方法