【Flink实战】 Flink SQL 中处理字符串 `‘NULL‘` 并转换为 `BIGINT`
文章目录
- 一、问题描述
- 解决方案
- 解释
一、问题描述
当我们尝试将字符串 'NULL'
直接转换为 BIGINT
时,会遇到 NumberFormatException
,因为 'NULL'
不是一个有效的数字字符串。为了避免这种错误,我们需要在转换之前进行检查。
解决方案
我们可以使用 CASE
语句来实现条件转换。具体步骤如下:
-
使用
CASE
语句进行条件判断:- 检查字符串是否为
'NULL'
, 如果是'NULL'
,则返回0
;否则,将字符串转换为BIGINT
。
- 检查字符串是否为
-
最外层进行
CAST
操作:- 确保整个
CASE
语句的结果被转换为BIGINT
类型。
- 确保整个
示例代码
SELECT CAST(CASE WHEN original_value = 'NULL' THEN 0ELSE CAST(original_value AS BIGINT)END AS BIGINT) AS zmt_id
FROM (SELECT 'NULL' AS original_valueUNION ALLSELECT '123' AS original_valueUNION ALLSELECT '456' AS original_value
) AS test_data;
解释
- 内层
CASE
语句:用于检查original_value
是否为'NULL'
,并根据条件返回0
或将其转换为BIGINT
。 - 外层
CAST
:确保最终结果为BIGINT
类型。