在Oracle中使用lpad时,在每列中获得额外的尾随空格

时间:2014-06-20 15:22:52

标签: sql oracle plsql oracle11g oracle10g

我在查询下运行使用shell脚本从oracle获取数据。

set heading off;
set COLSEP ",";
set echo off;
set FEEDBACK off;
set pages 0;
set tab off;
set linesize 10000;
SELECT nvl(lpad(ID1,9,' '),'         '),
ID2,
lpad(ID3,11,' '),
nvl(ID4,'         ')
FROM ENTMST.T_DB_ENTITY;
quit;

获得如下输出。

197329691                           ,197329691,  197329691                                 ,197329691

例如,第3列lpad对于值197329691正常工作,但之后我得到了额外的空间。我怎么能删除那些?

2 个答案:

答案 0 :(得分:1)

为每列添加别名:

SELECT NVL(LPAD(ID1,9,' '),'         ') ID1,
  ID2 ID2,
  LPAD(ID3,11,' ') ID3,
  NVL(ID4,'         ') ID4
FROM ENTMST.T_DB_ENTITY;

在select语句之前设置sql plus列宽:

   COL id1 FORMAT A9
   COL id2 FORMAT A9
   COL id3 FORMAT A9
   COL id4 FORMAT A9

答案 1 :(得分:0)

你可以像这样包装它:

RTRIM( lpad(ID3,11,' '))