当前位置: 首页 > ops >正文

【Flink实战】 Flink SQL 中处理字符串 `‘NULL‘` 并转换为 `BIGINT`

文章目录

    • 一、问题描述
        • 解决方案
        • 解释

一、问题描述

当我们尝试将字符串 'NULL' 直接转换为 BIGINT 时,会遇到 NumberFormatException,因为 'NULL' 不是一个有效的数字字符串。为了避免这种错误,我们需要在转换之前进行检查。

解决方案

我们可以使用 CASE 语句来实现条件转换。具体步骤如下:

  1. 使用 CASE 语句进行条件判断

    • 检查字符串是否为 'NULL', 如果是 'NULL',则返回 0;否则,将字符串转换为 BIGINT
  2. 最外层进行 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 类型。
http://www.xdnf.cn/news/14532.html

相关文章:

  • Vue学习笔记
  • 二分查找----1.搜索插入位置
  • C/C++ 高频八股文面试题1000题(一)
  • ROS1/ROS2中工作空间和工作包创建详解
  • 服务网格安全(Istio):用零信任架构重构微服务通信安全
  • 5.3 LED字符设备驱动
  • 深度学习笔记27-LSTM实现糖尿病探索与预测(Pytorch)
  • 实验问题记录:PyTorch Tensor 也会出现 a = b 赋值后,修改 a 会影响 b 的情况
  • 解锁决策树:数据挖掘的智慧引擎
  • IT运维面试常问问题答案
  • QEMU学习之路(10)— RISCV64 virt 使用Ubuntu启动
  • 【C++】哈希表的实现(开放定址法)
  • 服务器手动安装并编译R环境库包:PROJ→RGDAL
  • C++ 11 智能指针 std::weak_ptr
  • 项目开发中途遇到困难的解决方案
  • RISC-V物联网关,支持鸿蒙,T-Thread实时系统
  • 关于Seata的一个小issue...
  • 【蓝牙】Qt4中向已配对的手机发送PDF文件
  • html和css实现文本打断换行、自动换行
  • linux下如何找到dump文件被生成到哪里了
  • 机构运动分析系统开发(Python实现)
  • Excel学习01
  • 257. 二叉树的所有路径(js)
  • DL00215-基于YOLOv11的太阳能电池红外异常检测含数据集
  • 【工具】Koishi|koishi跨平台聊天机器人开发平台使用方式(开发者方式)
  • 神经网络试题
  • 船舶动力与自动化系统:PROFIBUS转EtherCAT接口技术的创新应用
  • 【分布式】基于Redisson实现对分布式锁的注解式封装
  • 数据要素治理框架下图情学科的核心角色重塑
  • 猜数字小游戏微信流量主小程序开源