• sql server 数字字符串的排序


    假如我们有这样的数据格式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#事实上饿 替他

    以上只是简单的解决问题的记录,希望对大家有帮助。

  • 相关阅读:
    JS中的prototype与面向对象
    机电传动控制第二周学习笔记
    第三周作业
    机电传动控制第四周作业
    第五周学习笔记
    机电传动控制第一周学习笔记
    个人项目图书管理系统登陆功能模拟
    GITHUB使用及入门总结
    我的github地址
    工作压力改变了我?
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/3643312.html
Copyright © 2020-2023  润新知