zoukankan      html  css  js  c++  java
  • 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#事实上饿 替他

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

  • 相关阅读:
    Domain Logic approaches
    Load data local infile 实验报告
    eclipse导入Maven项目
    MYSQL数据库导入数据时出现乱码的解决办法
    mysql创建用户并分配权限
    CDI Features
    Java Design Patterr
    关联tomcat源代码
    Spring AOP Capabilities and Goals
    CDI FEATURES
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/3643312.html
Copyright © 2011-2022 走看看