postgresql cast是什么

PostgreSQL CAST用于数据类型转换,语法为SELECT CAST(表达式 AS 目标类型),也可用::简写,如'123'::INTEGER;常用于字符串与数字、日期间转换,如CAST('2025-01-01' AS DATE)、456::TEXT、CAST(3.9 AS INTEGER)结果为3,支持时间戳转字符串NOW()::TEXT,但非法格式如'abc'转INTEGER会报错,需确保数据合法或预判处理。

PostgreSQL CAST 是一种用于将一个数据类型转换为另一个数据类型的操作。在查询中,当你需要把字符串转成数字、日期转成字符串,或者在不同数据类型之间进行比较或计算时,就会用到 CAST

基本语法

CAST 的标准语法如下:

SELECT CAST(表达式 AS 目标数据类型);

例如,将字符串 '123' 转换为整数:

SELECT CAST('123' AS INTEGER);

使用 :: 简写语法

PostgreSQL 还支持一种更简洁的类型转换写法,使用双冒号 ::

SELECT '123'::INTEGER;

这和使用 CAST 是等效的,但更简短,常见于 PostgreSQL 的日常使用中。

常见的转换场景

  • 字符串转日期:将 '2025-01-01' 转为 DATE 类型
    SELECT CAST('2025-01-01' AS DATE);
  • 数字转文本:便于拼接或输出
    SELECT 456::TEXT;
  • 浮点数转整数:截断小数部分
    SELECT CAST(3.9 AS INTEGER); -- 结果是 3
  • 时间戳与字符串互转
    SELECT NOW()::TEXT;

注意事项

并不是所有类型都能直接转换。如果值不符合目标类型的格式,会报错。比如:

SELECT CAST('abc' AS INTEGER); -- 错误:无法转换

建议在转换前确保数据格式合法,或使用 TRY_CAST 类似的逻辑(需通过条件判断或函数实现)来避免错误。

基本上就这些。CAST 在数据清洗、报表生成和跨类型查询中非常实用,掌握它能让你更灵活地处理不同类型的数据。