在SQL Server中查询以对具有数字和字母的数据进行排序

用户名

我的一张桌子有这样的值..

Year 1
Year 9
Year 8
Year 4
Kindy [can be any word without numbers]
Pre-School [can be any word without numbers]
Year 8
Year 22
Year 15....

我该如何首先按字母顺序对它们进行排序,然后再按数字以这种升序对其进行排序。

Kindy 
Pre-School
Year 1
Year 4
Year 8
Year 9
Year 15
Year 22

我已经尝试了以下方法。

SELECT  YearLevel FROM Student 
ORDER BY 
CASE WHEN YearLevel NOT LIKE '%[0-9]%' THEN 0
ELSE CAST(RIGHT(YearLevel, LEN(YearLevel) - 5) AS int)
END

但是问题是我只需要不同的记录。

模糊树

如果具有数字的列始终具有Year [digits]格式,则可以尝试此操作

SELECT YearLevel FROM student
GROUP BY YearLevel 
ORDER BY 
    (CASE 
        WHEN YearLevel LIKE 'Year%'
        THEN 'Year' + CONVERT(varchar,LEN(YearLevel)) + YearLevel
        ELSE YearLevel
    END)

http://sqlfiddle.com/#!3/1919c/3

虽然这可能会起作用,但我建议添加带有排序顺序的整数列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 SQL Server 中对字母数字进行排序

对字母数字 SQL Server 列进行排序

对 SQL 中的字母数字列进行排序

如何在SQL Server中创建具有带数字和字母的ID列的表

Sql Server 2008中的字母数字排序

使用字母数字值和仅字母值的混合值对SQL中的字母数字列进行排序

SQL Server 使用字母和数字对 VARCHAR 进行排序

从所有表和具有指定列名的所有数据库中查找列名SQL Server

如何使用C#对SQL Server中的字母数字列进行排序?

SQl Server:首先对字母数字进行排序,然后再对数字进行排序

在Oracle SQL中对字母数字列进行排序

SQL查询以对数据进行分组

使用SQL Server中不同记录的开始日期和结束日期创建具有数据范围的临时表

MSAccess中的SQL查询可根据其排序顺序对带有字母的值列进行排名

SQL查询从具有相同ID的不同表中获取所有数据

SQL查询在插入时对数据进行排序,先输入数字,然后输入字母,最后输入符号

如何正确排序SQL Server中的字母数字值

SQL Server:具有数据透视表数据的父子

如何允许SQL CLR函数在并行查询计划中运行并具有数据访问权限

带有数字列的 SQL Server 数据透视表

SQL查询-如何按字母顺序对部分数据进行排序,并按ID进行排序

SQL Server 先按字母再按数字排序

foreach和for循环无法从sql查询中获取所有数据

如何按数字顺序对字母数字SQL Server NVARCHAR列进行排序?

SQL Server:具有3个“ OR”条件和按ID排序的慢速查询

如何按字母顺序对SQL查询进行排序,但忽略前导数字?

在包含数字的SQL Server中对VARCHAR列进行排序?

在SQL Server中以数字方式对字符串进行排序

SQL Server:对具有 XML 列的不同表进行排序