首页 > 解决方案 > 如何不忽略 postgresql 排序中的标点符号?

问题描述

我的 SQL 查询

select name
from products
order by "name" asc

我的结果:

AAA
BBB
!!!CCC
DDD

我注意到了这个标志!由 postgresql 整合,如何修复它以考虑排序。

标签: databasepostgresql

解决方案


如果您不需要对非 ASCII 字符的特殊排序支持(例如,您不依赖于ß被排序为ss),则可以使用二进制排序规则(并忽略大小写):

ORDER BY lower(name) COLLATE "C"

如果您有更高级的需求,并且您的 PostgreSQL 是在 ICU 支持下构建的,您可以创建自定义 ICU 排序规则,更加强调特殊字符。


推荐阅读