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

如何获取PostgreSQL的列级别默认collation详情

查询PostgreSQL列级别Collation详情的方法

PostgreSQL支持列级别的Collation设置,你可以通过以下两种常用方式查询列的Collation信息:

1. 用information_schema.columns视图查询

这是最简洁直观的方式,直接读取列的collation_name字段:

SELECT
  table_name,
  column_name,
  data_type,
  collation_name
FROM information_schema.columns
WHERE table_schema = 'public'; -- 替换为你的目标模式名

查询结果里,collation_name就是该列的Collation。如果这个字段为NULL,说明该列没有显式设置Collation,会依次继承表、数据库、实例级的默认Collation。

2. 用pg_catalog系统表查询

如果需要更底层的系统信息,可以关联pg_attribute和pg_collation表:

SELECT
  c.relname AS table_name,
  a.attname AS column_name,
  t.typname AS data_type,
  col.collname AS collation_name
FROM pg_attribute a
JOIN pg_class c ON a.attrelid = c.oid
JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN pg_collation col ON a.attcollation = col.oid
WHERE c.relkind = 'r' -- 仅查询普通表
  AND a.attnum > 0 -- 排除系统内部列
  AND c.relnamespace = 'public'::regnamespace; -- 替换为你的目标模式名

这里pg_attribute.attcollation存储了列的Collation对象ID,关联pg_collation后就能拿到对应的Collation名称。

额外说明

  • 若要修改列的Collation,可执行语句:ALTER TABLE 表名 ALTER COLUMN 列名 SET COLLATION 目标collation名;
  • 实例级的默认Collation由初始化数据库时的lc_collate参数决定,数据库级的默认Collation可通过ALTER DATABASE修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:58:32