繁体   English   中英

如何在 PostgreSQL 中按字母顺序先大写后排序?

[英]How to sort in PostgreSQL by uppercase first and after by alphabetically?

当我查询数据库时:

select *
from users
order by name

结果是这样的:

Adam
AVA
adrian
James
JESSICA
John

我想按如下顺序排列:

  1. 行全大写
  2. 首字母或更多大写的行
  3. 按字母顺序排列

例子:

AVA
JESSICA
Adam
James
John
adrian

但无论如何对我来说就足够了:

AVA
JESSICA
Adam
adrian
James
John

这可以通过使用CASE WHEN并测试大写来完成;

SELECT *,
       CASE
           WHEN name = UPPER(name) THEN 1
           WHEN LEFT(name, 1) = UPPER(LEFT(name, 1)) THEN 2
           ELSE 3
       END toOrder
FROM users
ORDER BY toOrder, name ASC

在 PostgreSQL 13 上测试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM