Oracle trimspool 只有尾随空格(不是前导空格)

Posted

技术标签:

【中文标题】Oracle trimspool 只有尾随空格(不是前导空格)【英文标题】:Oracle trimspool only trailing blanks (not leading blanks) 【发布时间】:2011-01-21 16:06:12 【问题描述】:

我想知道是否有任何技巧可以让trimspool 只修剪右侧的尾随空格。

我的代码使用 dbms_output.put_line 打印到控制台,并且输出通常带有缩进,以便更容易用眼睛扫描。我将线宽设置得相当大,以使某些输出更易于阅读,因此我还设置了 trimspool 以消除多余的空白。唯一的问题是现在删除了前导空格以及尾随空格。有没有办法解决这个问题?我可以在一些输出语句中添加一个前导(在前导空格之前)“.”字符,但我不允许修改大多数包中的代码。


这是它在没有 trimmimg 的情况下输出的内容:

1 级(停产) 2 级(停产) 部分数据(EOL)

这是它当前在打开trimspool 时输出的内容:

1级(停产) 2级(停产) 部分数据(EOL)

这就是我想要的:

1级(停产) 2级(停产) 部分数据(EOL)

【问题讨论】:

+1,在 SQL*Plus 中处理空格输出是我持续困惑的根源。 【参考方案1】:

我猜你在追求

set serveroutput on size 100000 format wrapped

如果我明白你的问题。

如果我这样做:

set serveroutput on size 1000000

begin
  dbms_output.put_line('no indent');
  dbms_output.put_line('   indent');
end;
/

SQL*Plus 输出:

no indent
indent

如果我这样做了

set serveroutput on size 1000000 format truncated

begin
  dbms_output.put_line('no indent');
  dbms_output.put_line('   indent');
end;
/

SQL*Plus 输出:

no indent
   indent

您必须set trimspool on 才能消除直到eol 的空格。

【讨论】:

set serveroutput on size 100000 format wrapped 恢复了左边的空白,但现在右边有很多空白(文件大小现在几乎翻了一番)。 set serveroutput on size 1000000 format truncated 截断了一些输出行(不好)。 是的,神奇的组合似乎是set serveroutput on size 100000 format wrappedset trimspool on。谢谢!

以上是关于Oracle trimspool 只有尾随空格(不是前导空格)的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Plus 中,当在 Oracle 11g 及更高版本中使用 lpad 时,第二列会获得额外的尾随空格

SQLPlus 在插入时删除 clob 字段中的尾随空格

UIlabel尾随空格不起作用

在 VueJS 中总是出现“不允许尾随空格”的错误

前导和尾随空格剪切 + 中间空格替换

Bash:在行尾查找带有尾随空格的文件