如何解决在 SQL Plus 中,在 Oracle 11g 及更高版本中使用 lpad 时为第二列获取额外的尾随空格
示例代码:
spool "xy2.dat"
set heading off
set pause off
set termout off
set linesize 164
select 'start',lpad(current_date,12,'0'),current_date,'gap','end' from dual
/
spool off
Oracle 10g 输出:
start 00021-DEC-20 21-DEC-20 gap 21-DEC-20 end
Oracle 11g 及以上输出:
start 00021-DEC-20 21-DEC-20 gap 21-DEC-20 end
SQL Plus for Oracle 11g 的输出似乎很奇怪,我们是否有任何导致这种不同行为的根本原因。
解决方法
看起来即使列名没有显示(HEADING OFF),它们仍然占据了它们的空间。
由于您不需要列名,一个简单的解决方案可能是使用短列别名:
SET HEADING OFF
SELECT
'start' AS c1,LPAD( CURRENT_DATE,12,'0' ) AS c2,CURRENT_DATE AS c3,'gap' AS c4,CURRENT_DATE AS c5,'end' AS c6
FROM dual
结果:
start 00021-DEC-20 21-DEZ-20 gap 21-DEZ-20 end
这是以前的样子:
start 00021-DEC-20 21-DEZ-20 gap 21-DEZ-20 end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。