首页 > 解决方案 > PostgreSQL 比较字符串设置

问题描述

我有一个查询,它在不同的服务器上返回不同的结果。

select ' s' > '.'

第一个服务器返回真,第二个 - 假。有哪些设置会导致这种情况?

标签: postgresqltextcompare

解决方案


您的数据库有不同的COLLATION

排序规则功能允许指定每列甚至每个操作的数据的排序顺序和字符分类行为。这缓解了数据库的 LC_COLLATE 和 LC_CTYPE 设置在创建后无法更改的限制。

select name, setting
from pg_settings
where name in ('lc_collate', 'server_encoding', 'client_encoding');

-- explicit collation
select ' s' COLLATE "POSIX" > '.' COLLATE "POSIX"

SQLFiddle 演示


推荐阅读