显式类型转换
显式类型转换主要适用于类型转换函数调用场景,类型转换函数请参考类型转换函数。
显式类型转换语法为:
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数据库中新增数据类型,此转换方式不建议用户直接使用(可能导致结果不符合预期)。