sqlserver数字字符串的排序
假如我们有这样的数据格式1#XXXXX 20#CCCCC等的⼀系列数据那么我们如何可以排序出1 ,2,3,4,5,6,7.。。。。。。这样的数据呢
我们知道整数是可以排序成这样的格式的,但是字符串就不⼀样了,最简单的解决⽅法是截取字符串的部分并按照整数的格式进⾏排序,这样就可以了⽐较简单
我的测试环境是sql server
CREATE TABLE [dbo].[userapp](
[id] [nchar](20) NULL,
[name] [nchar](10) NULL
) ON [PRIMARY]
GO
只是数据的脚本
数据如下
id name
1#鹅鹅鹅饿饿地点
2#事实上饿地点
3#事实上饿 vv
30#事实上饿替他
10#事实上饿替他
5#事实上饿应⽤
20#事实上饿融⼊
这是我的排序写法(其中使⽤case when 是为了学习,实际上没有必要)
use userinfo
go
select * from userinfo.dbo.userapp order by CONVERT(int,substring(( CASE LEN(SUBSTRING(id,0,charindex('#',id)))
WHEN 1 THEN CONCAT('00',id)
字符串截取数字部分WHEN 2 THEN CONCAT('0',id)
else id
end
),1,3)
)
排序的结果如下:
1#鹅鹅鹅饿饿地点
2#事实上饿地点
3#事实上饿 vv
5#事实上饿应⽤
10#事实上饿替他
20#事实上饿融⼊
30#事实上饿替他
以上只是简单的解决问题的记录,希望对⼤家有帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论