更新时间:2026-03-23 GMT+08:00
显式类型转换
显式类型转换主要适用于类型转换函数调用场景,类型转换函数请参考类型转换函数。
显式类型转换语法为:
SELECT CAST(expression AS data_type);
其中expression是要转换的表达式,data_type是要转换成的数据类型,支持的目标转换类型如表1所示。
| 目标类型 | 用于承接输入值的数据类型(返参类型) |
|---|---|
| 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数据库中新增数据类型,此转换方式不建议用户直接使用(可能导致结果不符合预期)。
父主题: 类型转换