我有一套单字母和双字母需要订购。
Data :
A
B
D
E
F
G
AL
BL
DL
Output :
AL
BL
DL
E
F
G
A
B
D
我可以通过查询
获得以下结果SELECT column_name
FROM table_name
ORDER BY LENGTH(column_name) desc, column_name asc;
AL
BL
DL
A
B
D
E
F
G
但是如何在E F G之后放置A B D
任何帮助都会得到满足......
答案 0 :(得分:2)
执行此操作的一种方法是根据字符串中的第一个字符使用有关最大长度的其他信息。因此,'A'
的值为2,'G'
的值为1:
SELECT column_name
FROM (select t.*,
max(length(column_name)) over (partition by substr(column_name, 1, 1)) as fclen
from table_name t
) t
ORDER BY LENGTH(column_name) desc,
(case when fclen = 1 then 1 else 0 end) desc,
column_name asc;