跳转到主要内容

pg_try_cast

文本转换失败时返回 NULL 或指定类型的回退值。

概览

扩展包名版本分类许可证语言
pg_try_cast1.0FUNCPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
4855pg_try_cast否是否是是是-

Release 1.0.0 installs control/SQL 1.0; META provides.version says 1.0.0. PG16+ required, CI covers 16-18; input types without soft-error support may still raise errors.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.01817161514pg_try_cast-
RPMPIGSTY1.0.01817161514pg_try_cast_$v-
DEBPIGSTY1.0.01817161514postgresql-$v-pg-try-cast-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/A
el8.aarch64N/AN/A
el9.x86_64N/AN/A
el9.aarch64N/AN/A
el10.x86_64N/AN/A
el10.aarch64N/AN/A
d12.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
d12.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
d13.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
d13.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
u22.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
u22.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
u24.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
u24.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
u26.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A
u26.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
N/AN/A

构建

您可以使用 pig build 命令构建 pg_try_cast 扩展的 RPM / DEB 包:

pig build pkg pg_try_cast         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_try_cast 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

安装
pig install pg_try_cast;          # 当前活跃 PG 版本安装
pig
pig ext install -y pg_try_cast -v 18  # PG 18
pig ext install -y pg_try_cast -v 17  # PG 17
pig ext install -y pg_try_cast -v 16  # PG 16
dnf
dnf install -y pg_try_cast_18       # PG 18
dnf install -y pg_try_cast_17       # PG 17
dnf install -y pg_try_cast_16       # PG 16
apt
apt install -y postgresql-18-pg-try-cast   # PG 18
apt install -y postgresql-17-pg-try-cast   # PG 17
apt install -y postgresql-16-pg-try-cast   # PG 16

创建扩展:

CREATE EXTENSION pg_try_cast;

用法

来源:

pg_try_cast 提供 try_cast 与 try_convert,在受支持的输入转换出错时返回回退值,避免整个查询失败。发布版本 1.0.0 安装的 SQL 版本为 1.0。要求 PostgreSQL 16 或更新版本,上游 CI 覆盖 16–18。扩展可信、可迁移,无需预加载。

核心用法

CREATE EXTENSION pg_try_cast;
SELECT try_cast('42', NULL::integer);
SELECT try_cast('invalid', 0);
SELECT try_convert(NULL::date, '2026-02-30');

运行边界

try_cast(value text, fallback anyelement) 的第二个参数同时决定结果类型和出错回退值;try_convert(fallback anyelement, value text) 的参数顺序相反。NULL 输入仍返回 NULL,应为回退值指定明确类型。扩展会检查类型修饰符与域约束。它处理文本输入转换,不涵盖任意原生类型转换。尚未支持软错误机制的输入函数仍可能抛出错误,包括向 regtype 传入格式错误的类型名称。安装文件就绪后,拥有数据库 CREATE 权限的角色可安装此可信扩展。

这个页面对您有帮助吗?