to_regtypemod()
是一个用于从数据类型中提取修饰符的系统函数,例如 char
或 varchar
类型的长度。
to_regtypemod()
在 PostgreSQL 17 中添加。
用法
to_regtypemod (text
) →integer
返回值是修饰符的内部表示,可以与 format_type()
一起传递,以及来自 to_regtype()
的输出,以生成数据类型的人类可读名称。
如果不存在修饰符,则返回 -1
。
如果提供的数据类型定义不存在但语法有效,则返回 NULL
。
如果提供的数据类型语法无效,则会引发 ERROR
。
更改历史记录
- PostgreSQL 17
- 添加(提交 1218ca99)
示例
to_regtypemod()
的基本用法示例
postgres=# SELECT to_regtypemod('varchar(32)'); to_regtypemod --------------- 36 (1 row)
使用 format_type()
的示例
postgres=# WITH datatype AS ( SELECT 'numeric( 3, 2 )' AS type ) SELECT format_type( to_regtype(d.type), to_regtypemod(d.type) ) FROM datatype d; format_type -------------- numeric(3,2) (1 row)
如果不存在修饰符,则返回 -1
postgres=# SELECT to_regtypemod('smallint'); to_regtypemod --------------- -1 (1 row)
如果提供的值在语法上有效,但不表示数据类型,则返回 NULL
postgres=# SELECT to_regtypemod('varchar2(255)') IS NULL; ?column? ---------- t (1 row)
不正确的语法会导致引发 ERROR
postgres=# SELECT to_regtypemod('!') IS NULL; ERROR: syntax error at or near "!" LINE 1: SELECT to_regtypemod('!') IS NULL; ^ CONTEXT: invalid type name "!"
参考文献
- PostgreSQL 文档: 系统目录信息函数