to_regtypemod()

将类型名称转换为其修饰符的函数
此条目涉及 PostgreSQL 的一项功能,该功能是 PostgreSQL 17 的一部分,预计将于 2024 年底发布。

to_regtypemod() 是一个用于从数据类型中提取修饰符的系统函数,例如 charvarchar 类型的长度。

to_regtypemod()PostgreSQL 17 中添加。

用法

to_regtypemod ( text ) → integer

返回值是修饰符的内部表示形式,可以与 format_type() 一起传递,以及来自 to_regtype() 的输出,以生成数据类型的人类可读名称。

如果不存在修饰符,则返回 -1

如果提供的数据类型定义不存在但语法有效,则返回 NULL

如果提供的数据类型语法无效,则引发 ERROR

变更历史

示例

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 "!"

分类

数据类型系统函数

参见

to_regtype()format_type()

反馈

提交任何关于 "to_regtypemod()" 的评论、建议或更正 此处