gpt4 book ai didi

sql - 按字母数字排序

转载 作者:行者123 更新时间:2023-12-03 18:45:40 25 4
gpt4 key购买 nike

我想按以下顺序订购数据:


号数
字母数字
无破折号的Alpha


我有以下几种:


120-1
120-2
120-10
数字1
数字10
数字2
婚礼


这是我要寻找的顺序,除了数字(带破折号的Alpha)条目不在破折号后按数字排序。

经过多次尝试,这是我当前的sql语句:

SELECT SessionID, Identifier FROM Session 
ORDER BY
CASE
WHEN CAST(Identifier AS INTEGER) THEN SUBSTR(Identifier,0, INSTR(Identifier, '-')) + CAST(SUBSTR(Identifier, INSTR(Identifier, '-')+1, 999) AS INTEGER)
ELSE Identifier END


我究竟做错了什么?

谢谢。

最佳答案

1)按其中包含-的字符串排序,以便它们首先出现

2)在包含-的字符串中,在-之前的第一部分进行排序,并在适用的情况下将其转换为整数,否则在列本身进行排序

3)在包含-的字符串中,在-之后的第二部分进行排序,并在适用的情况下将其转换为整数,否则在列本身进行排序

select val
from t
order by
case when val like '%-%' then 1 else 2 end
,case when substr(val,1,instr(val,'-')-1) glob '*[0-9]*'
then cast(substr(val,1,instr(val,'-')-1) as integer)
when substr(val,1,instr(val,'-')-1) glob '*[a-zA-Z]*'
then substr(val,1,instr(val,'-')-1)
else val end
,case when val like '%-%' then cast(substr(val,instr(val,'-')+1) as integer)
else val end


SQL Fiddle

关于sql - 按字母数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37775820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com