SqlServer varchar数据中类似于1.1.1.1这种值的排序方法

Posted liuxiaoqian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlServer varchar数据中类似于1.1.1.1这种值的排序方法相关的知识,希望对你有一定的参考价值。

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这种值的排序方法的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库导入sqlserver报错,请问是怎么回事?

sqlserver数据库varchar(40)能存放多少汉字?

sqlserver中的nvarchar和varchar的区别

SQLSERVER中nvarchar和varchar类型的区别是啥?

sqlserver2008数据库中,我想设置varchar字段的长度为20000,要怎么做

varchar(-1)是什么意思?