原创

PostgreSQL-中文字段排序-修改字段的排序规则

-- 修改字段的排序规则
ALTER TABLE "public"."your_table_name" ALTER COLUMN "name" TYPE varchar(128) COLLATE "pg_catalog"."zh-Hans-CN-x-icu";

-- 升序但字母在最后
select name from your_table_name order by name ; 

-- 升序且字母在前
SELECT name
FROM your_table_name
ORDER BY 
    CASE 
        WHEN name ~ '^[A-Za-z]' THEN 0  -- 英文开头的记录排在前面
        ELSE 1                          -- 中文记录排在后面
    END ,
    name COLLATE "pg_catalog"."zh-Hans-CN-x-icu";  -- 中文按拼音排序

-- 降序且字母在后
SELECT name
FROM your_table_name
ORDER BY 
    CASE 
        WHEN name ~ '^[A-Za-z]' THEN 1  
        ELSE 0                         
    END ,
    name COLLATE "pg_catalog"."zh-Hans-CN-x-icu" desc;
正文到此结束
本文目录