更新时间:2026-07-03 GMT+08:00
分享

类型转换函数

功能描述

类型转换函数用于在不同数据类型之间进行转换。Spark 4.0将常用类型转换函数归类,包括显式转换、格式化转换和特殊类型转换。

函数列表

函数

描述

cast(expr AS type)

将表达式转换为指定类型。标准SQL类型转换。也支持 expr :: type 语法。

try_cast(expr AS type)

将表达式转换为指定类型。转换失败时返回NULL而非报错。

typeof(expr)

返回表达式的数据类型名称(DDL格式字符串)。

bigint(expr)

将值转换为BIGINT类型。

binary(expr)

将值转换为BINARY类型。

boolean(expr)

将值转换为BOOLEAN类型。

date(expr)

将值转换为DATE类型。

decimal(expr)

将值转换为DECIMAL类型。

double(expr)

将值转换为DOUBLE类型。

float(expr)

将值转换为FLOAT类型。

int(expr)

将值转换为INT类型。

smallint(expr)

将值转换为SMALLINT类型。

string(expr)

将值转换为STRING类型。

timestamp(expr)

将值转换为TIMESTAMP类型。

tinyint(expr)

将值转换为TINYINT类型。

示例

cast — 标准类型转换

SELECT cast('123' AS INT); 
-- 123
 
SELECT cast(3.14 AS INT); 
-- 3
 
SELECT cast('2024-01-01' AS DATE); 
-- 2024-01-01

使用 :: 语法(PostgreSQL风格)

SELECT '10' :: INT; 
-- 10
 
SELECT '2024-01-01' :: DATE; 
-- 2024-01-01

try_cast — 安全类型转换

SELECT try_cast('123' AS INT); 
-- 123
 
SELECT try_cast('abc' AS INT); 
-- NULL(转换失败返回NULL,不报错)
 

typeof — 查看数据类型

SELECT typeof(1); 
-- int
 
SELECT typeof('hello'); 
-- string
 
SELECT typeof(array(1, 2, 3)); 
-- array<int>

简写类型转换函数

SELECT int('123'); 
-- 123
 
SELECT string(3.14); 
-- 3.14
 
SELECT date('2024-01-01'); 
-- 2024-01-01

注意事项

  • cast 在转换失败时会报错,try_cast 在转换失败时返回NULL。
  • try_cast 是Spark 3.0+新增的函数,适用于数据清洗场景,避免因个别脏数据导致整个查询失败。
  • 简写类型转换函数(如 int()、string())等价于 cast(expr AS type)。
  • Spark 4.0支持PostgreSQL风格的 :: 类型转换语法,如 '10' :: INT。
  • typeof 返回的是DDL格式的类型字符串,可用于调试和动态schema处理。

相关文档