当前位置: 首页 > 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.dtcms.com/a/293761.html

相关文章:

  • Python-初学openCV——图像预处理(一)
  • C++刷题 - 7.23
  • 开源 Arkts 鸿蒙应用 开发(九)通讯--tcp客户端
  • 在 Ubuntu 20.04.5 LTS 系统上安装 Docker CE 26.1.4 完整指南
  • Spring Cloud Alibaba Sentinel 基本工作原理源码阅读
  • MACOS安装配置Gradle
  • 国产数据库转向 “融合” 赛道:电科金仓的下一代形态定义之路
  • 基于Matlab传统图像处理技术的车辆车型识别与分类方法研究
  • 资本押注会成长的玩具,AI潮玩赛道开始升温
  • 华为云ELB(弹性负载均衡)持续报异常
  • 永磁同步电机控制算法--弱磁控制(负载能力最大化的定交轴)
  • 【C++】C++ 的入门语法知识1
  • 在easyui中如何设置自带的弹窗,有输入框
  • 解决Spring事务中RPC调用无法回滚的问题
  • 零基础学编程,编程从入门到精通系列教程,附:编程工具箱之时间计算构件的用法#零基础自学编程 学习计划#新手学编程 高效学习方法
  • HF83311_VB1/HF83311Q_VB1:高性能USB HiFi音频解码器固件技术解析
  • Leetcode-15. 三数之和
  • 《计算机“十万个为什么”》之 [特殊字符] 深浅拷贝 引用拷贝:内存世界的复制魔法 ✨
  • 1.1 Deep learning?pytorch ?深度学习训练出来的模型通常有效但无法解释合理性? 如何 解释?
  • 英语词汇积累Day1-10(summary)
  • Django实战:Python代码规范指南
  • 【Java】Reflection反射(代理模式)
  • 算法竞赛备赛——【图论】最小生成树
  • 《元素周期表》超高清PDF
  • IDEA如何管理多个Java版本。
  • STM32 基础知识 定时器【概念】
  • 基于PyTorch的多视角二维流场切片三维流场预测模型
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-微博点赞量Top6实现
  • 19.动态路由协议基础
  • 备受关注的“Facebook Email Scraper”如何操作?