SQL字符串字段内的字符排序

本文详细阐述了排序规则,包括按#号前字符大小排序和按/左右消除后的结果排序,并通过SQL语句展示了实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

排序要求:
1.首先安装 #号前面的字符大小排序
2.再按照 / 左右消除的结果排序 例如: 1/4 < 5/16
排序前
1/4-20
10#-24
2#-56
4#-40
5/16-18
6#-32
8#-32
排序后结果
2#-56
4#-40
6#-32
8#-32
10#-24
1/4-20

5/16-18


SQL:

--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
GO
create table [TB]([col] varchar(7))
insert [TB]
select '1/4-20' union all
select '10#-24' union all
select '2#-56' union all
select '4#-40' union all
select '5/16-18' union all
select '6#-32' union all
select '8#-32'

SELECT * FROM TB
ORDER BY CASE WHEN CAST(PARSENAME(REPLACE(col,'#','.'),2) AS int) IS NULL THEN 1 ELSE 0 END,
CAST(PARSENAME(REPLACE(col,'#','.'),2) AS int),
PARSENAME(REPLACE(col,'/','.'),2)

/*
col
-------
2#-56
4#-40
6#-32
8#-32
10#-24
1/4-20
5/16-18

(7 行受影响)


*/
drop table [TB]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值