You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Oracle中chr()函数在SQL引擎与PL/SQL引擎返回结果不同?

差异原因解析

导致同一个chr()函数传入122.5却得到不同结果的核心原因,是Oracle的PL/SQL引擎与SQL引擎对非整数参数的处理规则不同:

  • 在PL/SQL代码块中直接调用chr(n)时,引擎会将非整数参数四舍五入为最近的整数。122.5被四舍五入为123,对应ASCII字符{。
  • 在SQL语句(select chr(n) into c_sql from dual)中调用chr()时,引擎会截断小数部分只保留整数部分。122.5被截断为122,对应ASCII字符z。

本质上是PL/SQL和SQL对数值类型隐式转换的规则存在差异:PL/SQL里向整数类型转换时遵循四舍五入逻辑,而SQL里的转换则直接丢弃小数部分。

内容的提问来源于stack exchange,提问作者JoseNicolau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:40:54