Oracle 如何从SQL*Plus结果中删除不必要的字符?

Oracle 如何从SQL*Plus结果中删除不必要的字符?,oracle,sqlplus,Oracle,Sqlplus,我正在寻找一种从SQL*Plus查询结果中删除所有不必要字符的方法 仅供参考:我的公司要求我在这里发布问题之前隐藏任何数据,因此我已将所有列名替换为XXXXXX(字长保持不变),并将所有数据替换为DDDD。很抱歉这么做,但我不想惹麻烦;) 首先:我想将所有SQL*Plus输出减少到两个示例中的一个 第一个与PL/SQL Developer中的查询结果相同,如下所示: DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDD

我正在寻找一种从SQL*Plus查询结果中删除所有不必要字符的方法

仅供参考:我的公司要求我在这里发布问题之前隐藏任何数据,因此我已将所有列名替换为XXXXXX(字长保持不变),并将所有数据替换为DDDD。很抱歉这么做,但我不想惹麻烦;)

首先:我想将所有SQL*Plus输出减少到两个示例中的一个

第一个与PL/SQL Developer中的查询结果相同,如下所示:

DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
XXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXX
------------------,------------------                                           
XXXXXXXXXXXXXXXXXXXXXXXX                                                        
--------------------------------------------------                              
XXXXXXXXXXXXXXXXXXXXXX
--------------------------------------------------------------------------------
XXXXXXXXXXXXXX                                                                    
--------------------------------------------------                              
XXXXXXXXX                                                                       
--------------------------------------------------------------------------------
XXXX
--------------------------------------------------------------------------------
XXXXXXXXXXXXXXXXXXX                               ,XXXXXXXXX,X,XXXXXXXXX        
--------------------------------------------------,---------,-,---------        
XXXXXXXXX,X,XXXXXXXXXXXX                                      ,XXXXXXXXXXXXXXXX 
---------,-,--------------------------------------------------,---------------- 
XXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXX                                               
----------------,----------------                                               
              DDDD,              DDDD 
DDDDDDD, DDDDDDD
DDDDDDD                                           ,DDDDDDDDD,D,DDDDDDDDD
DDDDDDDDD, ,DD                                                ,             DDD
         DDD,               D
第二种可能性(使用列名称,作为SQLPlus中的默认值):

XXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXXX,XXXXXXXXXXX,XXXXXXXXX,        XXXX,XXXXXXXXXXXXXXXXXXX,XXXXXXXXX,X,XXXXXXXXX,XXXXXXXXX,  X,XXXXXXXXXXXX,XXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXX
------------------,------------------,------------------------,----------------------,-----------,---------,------------,-------------------,---------,-,---------,---------,---,------------,----------------,----------------,----------------
              DDDD,              DDDD,          DDDDDD,         DDDDDDDDD,           ,         ,DDDDDDDDDDDD,        DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD,DDD,         DDD,             DDD,             DDD,               D
你已经掌握了基本知识。现在。对于当前的结果,我已经掌握了

纯SQLPlus结果,只需一次修改,即

set colsep ','
看起来像这样:

DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
XXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXX
------------------,------------------                                           
XXXXXXXXXXXXXXXXXXXXXXXX                                                        
--------------------------------------------------                              
XXXXXXXXXXXXXXXXXXXXXX
--------------------------------------------------------------------------------
XXXXXXXXXXXXXX                                                                    
--------------------------------------------------                              
XXXXXXXXX                                                                       
--------------------------------------------------------------------------------
XXXX
--------------------------------------------------------------------------------
XXXXXXXXXXXXXXXXXXX                               ,XXXXXXXXX,X,XXXXXXXXX        
--------------------------------------------------,---------,-,---------        
XXXXXXXXX,X,XXXXXXXXXXXX                                      ,XXXXXXXXXXXXXXXX 
---------,-,--------------------------------------------------,---------------- 
XXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXX                                               
----------------,----------------                                               
              DDDD,              DDDD 
DDDDDDD, DDDDDDD
DDDDDDD                                           ,DDDDDDDDD,D,DDDDDDDDD
DDDDDDDDD, ,DD                                                ,             DDD
         DDD,               D
如您所见,这里有大量的------,我向您展示的结果仅涵盖了前两列的结果(DDDD,dddddd)。不需要粘贴所有结果,但它们看起来是一样的。列名和------的组合重复了很多次,只是为了覆盖一两个结果。这使得所有结果都完全无法读取

我已尝试对这组命令执行相同的操作:

set heading off
set recsep off
我得到的结果接近我想要的…但仍然充满了不必要的空格和换行符(我假设换行符来自

linesize
财产

看起来是这样的:

DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
DDDD,DDDD,DDDDDD,DDDDDDDDD,,,DDDDDDDDDDDD,DDDDDDD,DDDDDDDDD,D,DDDDDDDDD,DDDDDDDDD, ,DDD,DDD,DDD,D
XXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXX
------------------,------------------                                           
XXXXXXXXXXXXXXXXXXXXXXXX                                                        
--------------------------------------------------                              
XXXXXXXXXXXXXXXXXXXXXX
--------------------------------------------------------------------------------
XXXXXXXXXXXXXX                                                                    
--------------------------------------------------                              
XXXXXXXXX                                                                       
--------------------------------------------------------------------------------
XXXX
--------------------------------------------------------------------------------
XXXXXXXXXXXXXXXXXXX                               ,XXXXXXXXX,X,XXXXXXXXX        
--------------------------------------------------,---------,-,---------        
XXXXXXXXX,X,XXXXXXXXXXXX                                      ,XXXXXXXXXXXXXXXX 
---------,-,--------------------------------------------------,---------------- 
XXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXX                                               
----------------,----------------                                               
              DDDD,              DDDD 
DDDDDDD, DDDDDDD
DDDDDDD                                           ,DDDDDDDDD,D,DDDDDDDDD
DDDDDDDDD, ,DD                                                ,             DDD
         DDD,               D
有没有办法删除所有不必要的空格和换行符


为SQLPlus输出编写一个样式的最佳方法是什么,该样式将为不同的查询集生成至少可读的结果?

最简单的方法->只需连接输出(让您可以轻松地动态格式化日期和数字)


SQL*Plus
提供了许多
格式选项
。您可以选择相应地使用它们

SET LINESIZE 1000
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET TERMOUT OFF
SET TRIMOUT ON
SET TRIMSPOOL ON
SET COLSEP |
SET NEWPAGE NONE
SET PAGESIZE 0
SET SPACE 0
让我们看一个演示

原始输出,没有任何格式

SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 17-DEC-80        800
        20

      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300
        30

      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500
        30


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7566 JONES      MANAGER         7839 02-APR-81       2975
        20

      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400
        30

      7698 BLAKE      MANAGER         7839 01-MAY-81       2850
        30


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 09-JUN-81       2450
        10

      7788 SCOTT      ANALYST         7566 19-APR-87       3000
        20

      7839 KING       PRESIDENT            17-NOV-81       5000
        10


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0
        30

      7876 ADAMS      CLERK           7788 23-MAY-87       1100
        20

      7900 JAMES      CLERK           7698 03-DEC-81        950
        30


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7902 FORD       ANALYST         7566 03-DEC-81       3000
        20

      7934 MILLER     CLERK           7782 23-JAN-82       1300
        10


14 rows selected.
让我们格式化看看

SQL> SET LINESIZE 16000
SQL> SET ECHO OFF
SQL> SET FEEDBACK OFF
SQL> SET VERIFY OFF
SQL> SET HEADING OFF
SQL> SET TERMOUT OFF
SQL> SET TRIMOUT ON
SQL> SET TRIMSPOOL ON
SQL> SET COLSEP |
SQL> SET NEWPAGE NONE
SQL> SET PAGESIZE 0
SQL> SET SPACE 0
SQL>
SQL> select * from emp;
      7369|SMITH     |CLERK    |      7902|17-DEC-80|       800|          |        20
      7499|ALLEN     |SALESMAN |      7698|20-FEB-81|      1600|       300|        30
      7521|WARD      |SALESMAN |      7698|22-FEB-81|      1250|       500|        30
      7566|JONES     |MANAGER  |      7839|02-APR-81|      2975|          |        20
      7654|MARTIN    |SALESMAN |      7698|28-SEP-81|      1250|      1400|        30
      7698|BLAKE     |MANAGER  |      7839|01-MAY-81|      2850|          |        30
      7782|CLARK     |MANAGER  |      7839|09-JUN-81|      2450|          |        10
      7788|SCOTT     |ANALYST  |      7566|19-APR-87|      3000|          |        20
      7839|KING      |PRESIDENT|          |17-NOV-81|      5000|          |        10
      7844|TURNER    |SALESMAN |      7698|08-SEP-81|      1500|         0|        30
      7876|ADAMS     |CLERK    |      7788|23-MAY-87|      1100|          |        20
      7900|JAMES     |CLERK    |      7698|03-DEC-81|       950|          |        30
      7902|FORD      |ANALYST  |      7566|03-DEC-81|      3000|          |        20
      7934|MILLER    |CLERK    |      7782|23-JAN-82|      1300|          |        10
SQL>