我有一组单字母和双字母需要订购。
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
但是如何将 A B D 放在 E F G 之后
如有任何帮助,我们将不胜感激...
最佳答案
实现此目的的一种方法是根据字符串中的第一个字符使用有关最大长度的附加信息。因此,'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;
关于sql - 按字符串长度排序,然后按 pl sql 中的单个字母 desc 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643011/