如何在 PostgreSQL 中按拉脱维亚语字母顺序对文本进行排序,以便任何不带重音的字母始终位于带重音的字母之前?
比如这个
select * from (
select 'bā' as name
union select 'āa'
union select 'ac'
union select 'Āb'
union select 'Ā'
) t
order by name COLLATE "lv-x-icu"
回归
Ā āa Āb ac bā
但是预期的结果是
ac Ā āa Āb bā
我尝试创建一些自定义排序规则,但没有一个返回预期结果。
您可以将
order by
与 case
子句结合使用 :
select * from (
select 'bā' as name
union select 'āa'
union select 'ac'
union select 'Āb'
union select 'Ā'
) t
order by case when name ~ '[[:ascii:]]' then 0 else 1 end, name