首页/数据/SQL 速查/CAST / CONVERT 类型转换
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

CAST / CONVERT 类型转换

显式类型转换:MySQL 用 CAST(x AS SIGNED/UNSIGNED/CHAR/DECIMAL...),PostgreSQL 用 CAST(x AS type) 或 x::type;非法文本的处理策略不同。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT CAST('123' AS SIGNED), CAST(12.34 AS UNSIGNED);
SELECT CAST(123 AS CHAR), CAST('2024-06-01' AS DATE);
SELECT CONVERT(12.34, SIGNED);          -- 等价 CAST 风格
SELECT CAST('123abc' AS SIGNED);        -- 123 并产生 warning

PostgreSQL

PostgreSQL
SELECT CAST('123' AS integer), '123'::int;
SELECT CAST(12.34 AS numeric(6,2));
SELECT CAST('2024-06-01' AS date);
SELECT CAST('123abc' AS integer);       -- 直接报错 invalid input syntax
MySQL 特有SIGNED / UNSIGNED / CHAR / JSON / BINARY 等目标类型
PostgreSQL目标类型名遵循 SQL 标准(integer/numeric/date...);:: 简写
非法输入MySQL 截取可用前缀并 warning;PostgreSQL 抛错

易错点

  • MySQL 无符号列相减:0-1 在 UNSIGNED 下报 BIGINT UNSIGNED value is out of range,负数运算显式 CAST AS SIGNED
  • PostgreSQL 里 CAST 不会“尽力而为”,脏数据要先清洗再转,否则整条查询中断

数据来源与参考

  • MySQL 8.0 Reference Manual · CAST
  • PostgreSQL Documentation · Type Conversion Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌