You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Oracle数据库数据含尾随空格,SQL*Plus查询时被截断如何解决?

解决SQL*Plus自动截断字符串尾部空格的问题

这个问题我之前也碰到过,SQL*Plus默认的输出设置确实会悄悄截断尾部空格,给排查问题带来麻烦,给你两个靠谱的解决办法:

  • 方法一:关闭SQL*Plus的自动截断参数
    SQL*Plus默认开启了TRIMSPOOLTRIMOUT两个参数,它们会自动砍掉输出结果里的尾部空格。你只需要在执行查询前运行这两条命令就能关闭这个行为:
SET TRIMSPOOL OFF
SET TRIMOUT OFF

之后再执行你的查询,尾部空格就会完整显示出来了。如果想每次启动SQL*Plus都生效,可以把这两行添加到你的glogin.sql或者login.sql配置文件中。

  • 方法二:用显式标记验证空格(辅助排查)
    如果你只是想快速确认尾部空格的存在,也可以给字符串拼接一个特殊标记字符,比如:
select property_name||'|'||property_value||'#' from some_table where x = 'foo';

这样尾部的空格会清晰地显示在#符号前面,一眼就能看出来。

至于为什么SQL Developer和你的应用程序能正常看到空格,是因为它们不会像SQL*Plus这样默认做输出截断处理,会完整返回字符串的原始内容。

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

火山引擎 最新活动