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

华为云数据库 GaussDB的 nvarchar2隐式类型转换的坑

bigint 与 nvarchar2比较时发生隐式类型转换的坑

1. 案例分析

假设:

  1. table1有下面两个字段:id:bigintsource_id nvarchar2(50)
  2. 数据库中id 的值一定大于 int4 的最大值,例如存在一条单据: id=1947854462980792321source_id= 1947849730132353025

满足上面两个条件后,执行下面的sql,一定会报错:ERROR: Value "1947849730132353025" is out of range for type integer. 这就是因为再进行a.id = p.source_id 这块计算时,nvarchar2 的source_id 隐式转换为 int4 失败导致的。

SELECT a.id, a.source_id, FROM table1 a INNER JOIN (SELECT id, source_id, approve_dt, wf_flg FROM table1 WHERE id = 1947854462980792321) p ON a.id = p.source_id

2. 解决方法:

2.1 方案 1:设置 id 和 source_id 的类型一致

  • 要么都采用 varchar
  • 要么都采用 bigint(但是要注意前端 number 类型超长问题)

2.2 方案 2:写 sql 手动进行类型转换

 SELECT a.id, a.source_id, FROM table1 a INNER JOIN (SELECT id, source_id, approve_dt, wf_flg FROM table1 WHERE id = 1947854462980792321) p ON a.id = p.source_id::BIGINT
http://www.xdnf.cn/news/1171909.html

相关文章:

  • gig-gitignore工具实战开发(一):项目愿景与蓝图规划
  • C#与WPF使用mvvm简单案例点击按钮触发弹窗
  • C Primer Plus 第6版 编程练习——第10章(上)
  • MySQL金融级数据一致性保障:从原理到实战
  • 视频、音频录制
  • Javascript常见的使用场景
  • 基于 XGBoost 与 SHAP 的医疗自动化办公与可视化系统(上)
  • Deep learning--模型压缩的五种方法
  • 什么是5G-A三防平板?有什么特点?哪些领域能用到?
  • Java 抽象类 vs 接口(Abstract Class vs Interface)对比笔记
  • 220V降5V,输出100MA,为家电电器消费类产品提供电源WD5202L
  • 【Dify】-进阶11- 权限与发布配置详解
  • ESP32-CAM实战:DIY基于OpenAI的AI视觉识别相机
  • 显微科研中的关键选择:不同显微镜相机技术特性与应用适配性全面解析
  • k8s pvc是否可绑定在多个pod上
  • 学生信息管理系统 - HTML实现增删改查
  • 硬件基础 -- 信号完整性
  • solidity从入门到精通 第四章:智能合约的生命周期
  • 需要系统的学习下Docker的使用
  • 【图像处理基石】如何对遥感图像进行目标检测?
  • Upload-Labs通关全攻略详细版
  • 二进制安装 Kubernetes 高可用集群
  • 设计模式(单例)
  • 《从C风格到C++风格:内存管理的进化之路》
  • JavaScript 02 数据类型和运算符数组对象
  • JavaScript 01 JavaScript 是什么
  • AI智能体“上下文工程”实践:来自 Manus 项目的经验总结
  • 大模型后训练——DPO实践
  • 代码随想录算法训练营第二十八天
  • ZLMediaKit 入门