更新时间:2025-09-11 GMT+08:00
分享

显式类型转换

显式类型转换主要适用于类型转换函数调用场景,类型转换函数请参考类型转换函数

显式类型转换语法为:

SELECT CAST(expression AS data_type);

其中expression是要转换的表达式,data_type是要转换成的数据类型,支持的目标转换类型如表1所示。

表1 显式cast转换

目标类型

用于承接输入值的数据类型(返参类型)

SIGNED [INTEGER]

BIGINT

UNSIGNED [INTEGER]

BIGINT UNSIGNED

DATE

DATE

TIME

TIME

DATETIME

DATETIME

BINARY

TEXT

CHAR

TEXT

DECIMAL

NUMERIC

FLOAT

FLOAT4

DOUBLE

FLOAT8

示例:

-- signed转换cast用法。
m_db=# SELECT CAST(9223372036854775808 AS SIGNED);
         cast         
----------------------
 -9223372036854775808
(1 row)

-- 边界值处理。
m_db=# SELECT CAST(9223372036854775808.0 AS SIGNED);
WARNING:  Truncated incorrect DECIMAL value: '9223372036854775808.0'
CONTEXT:  referenced column: cast
        cast         
---------------------
 9223372036854775807
(1 row)

-- char转换cast用法(修饰符限定边界)。
m_db=# SELECT CAST(123 AS CHAR(3));
 cast 
------
 123
(1 row)

显式类型转换还可以使用双冒号语法,例如“SELECT 1::INT”;双冒号显式转换行为逻辑同默认隐式转换逻辑一致且支持M-Compatibility数据库中新增数据类型,此转换方式不建议用户直接使用(可能导致结果不符合预期)。

相关文档