Sql 第一个顺序是D之前的值DK,然后是使用cases的值的数字部分
我需要使用以下规则订购一些值:Sql 第一个顺序是D之前的值DK,然后是使用cases的值的数字部分,sql,database,Sql,Database,我需要使用以下规则订购一些值: D之前以DK开始的值 按字母顺序在这两个组中排序 因此,这些值如下所示: DK207 D107 DK107 D099 他们希望最终得到: DK107 DK207 D099 D107 我目前的尝试: select * from customers order by case WHEN substring(code,1,2) = 'DK' then substring(code,1,2) WHEN substring(code,1,1) =
- D之前以DK开始的值
- 按字母顺序在这两个组中排序
- DK207
- D107
- DK107
- D099
- DK107
- DK207
- D099
- D107
select *
from customers
order by case
WHEN substring(code,1,2) = 'DK' then substring(code,1,2)
WHEN substring(code,1,1) = 'D' then substring(code,1)
END desc,
case
WHEN substring(code,1,2) = 'DK' then substring(code,3)
WHEN substring(code,1,1) = 'D' then substring(code,2)
END asc;
这对于DK值来说似乎很好,但是对于以D开头的值来说却很糟糕。
它们被正确地分组,但带D的似乎按降序排列。添加
,1
,如图所示
否则你会拿走一切
select *
from customers
order by case
WHEN substring(code,1,2) = 'DK' then substring(code,1,2)
WHEN substring(code,1,1) = 'D' then substring(code,1,1) <----- Importanat change!!!
END desc,
case
WHEN substring(code,1,2) = 'DK' then substring(code,3)
WHEN substring(code,1,1) = 'D' then substring(code,2)
END asc;
选择*
来自客户
逐案订购
当子字符串(代码,1,2)=‘DK’时,则子字符串(代码,1,2)
当子字符串(代码,1,1)=‘D’时,则子字符串(代码,1,1)在指示位置添加,1
否则你会拿走一切
select *
from customers
order by case
WHEN substring(code,1,2) = 'DK' then substring(code,1,2)
WHEN substring(code,1,1) = 'D' then substring(code,1,1) <----- Importanat change!!!
END desc,
case
WHEN substring(code,1,2) = 'DK' then substring(code,3)
WHEN substring(code,1,1) = 'D' then substring(code,2)
END asc;
选择*
来自客户
逐案订购
当子字符串(代码,1,2)=‘DK’时,则子字符串(代码,1,2)
当substring(代码,1,1)=‘D’时,那么substring(代码,1,1)你能提到RDBMS吗?你能提到RDBMS吗?事实上,我在第一次做第二部分时复制了该部分,我想我错过了该部分。事实上,我在第一次做第二部分时复制了该部分,我想我错过了该部分。