You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中实现拉脱维亚语排序:无重音字母优先于带重音字母

在PostgreSQL中实现无重音优先的拉脱维亚语排序

要让无重音字母始终排在带重音字母之前,你可以通过先区分是否含重音字符,再按拉脱维亚语规则排序的方式实现,无需复杂的自定义排序规则。

解决方案示例

select * from (
    select 'bā' as name
    union select 'āa'
    union select 'ac'
    union select 'Āb'
    union select 'Ā'
) t
order by 
    -- 标记含重音的字符,让无重音项排前面
    case when name ~ '[āēīōūĀĒĪŌŪ]' then 1 else 0 end,
    -- 再按拉脱维亚语规则排序剩余项
    name COLLATE "lv-x-icu"

效果说明

这条语句会先将不含拉脱维亚语重音字符的ac排在最前面,剩下的带重音项则遵循拉脱维亚语的默认排序规则,最终结果与你的预期一致:ac Ā āa Āb bā。

补充说明

如果需要覆盖更多拉脱维亚语特殊字符,只需扩展正则表达式中的字符集即可(比如加入čģķļņšžČĢĶĻŅŠŽ等)。

内容的提问来源于stack exchange,提问作者va.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:23:25