Sql 在desc oder中使用字母数字数据对列进行排序
我需要使用SQL查询按降序对列进行排序 我用了正常的方法Sql 在desc oder中使用字母数字数据对列进行排序,sql,sorting,sql-server-2008-r2,Sql,Sorting,Sql Server 2008 R2,我需要使用SQL查询按降序对列进行排序 我用了正常的方法 Select * from StaffDetail order by SerialNo desc 但无法得到预期的结果,下面给出了用于排序的样本数据 样本数据 预期结果 只需使用LEFT、RIGHT、CHARINDEX字符串函数的组合,将字符串一分为二即可。然后根据这两个值进行排序 查询 select t.[Id], t.[SerialNo] from( select [Id], [SerialNo], left(
Select * from StaffDetail order by SerialNo desc
但无法得到预期的结果,下面给出了用于排序的样本数据
样本数据
预期结果
只需使用
LEFT
、RIGHT
、CHARINDEX
字符串函数的组合,将字符串一分为二即可。然后根据这两个值进行排序
查询
select t.[Id], t.[SerialNo] from(
select [Id], [SerialNo],
left([SerialNo], charindex(' - ', [SerialNo], 1) - 1) [new_col1],
right([SerialNo], charindex(' - ', reverse([SerialNo]), 1) - 1) [new_col2]
from [your_table_name]
)t
order by len(t.[new_col1]) desc, t.new_col1 desc, cast(t.[new_col2] as int) desc;
您还可以通过子句更改订单,如
order by len(t.[new_col1]) desc, t.[new_col1] desc,
len(t.[new_col2]) desc, t.[new_col2] desc;
您正在使用哪些数据库管理系统?博士后?甲骨文?数字是按字母顺序排列的。您使用的是哪种数据库管理系统?有些产品具有数字敏感排序规则。您能否将
BRB2017-6
添加到示例数据和预期结果中?我使用的是SQL Server 2008 R2,而此代码片段可以解决此问题,确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您代码建议的原因。兄弟,您误解了我的问题“ASR2016-1”是一个单一值。我添加了一个表结构的图像。@ArunD:更新了答案
Select * from tableName order by columnName1 desc,SUBSTRING(columnName2,1)*1 desc