首页 > 解决方案 > 清除列定义

问题描述

我对这个功能感到困惑clear columns。有人可以向我解释这一点。

我在我的脚本中使用它。

    clear columns
COLUMN temp_in_statement new_value str_in_statement
SELECT DISTINCT 
    LISTAGG('''' || MONTHCOVERED || ''' AS ' || to_char(MONTHCOVERED,'MONDDYYYY'),',')
        WITHIN GROUP (ORDER BY MONTHCOVERED) AS temp_in_statement 
    FROM (SELECT DISTINCT trunc(MONTHCOVERED) as MONTHCOVERED FROM bbsm_aaa where trunc(MONTHCOVERED) between '01-AUG-19' and '31-OCT-19');

是否有特定的列被清除?或者我分配的所有列也被删除了?

标签: oraclesqlplus

解决方案


HELP是有原因的:)

SQL> help clear

 CLEAR
 -----

 Resets or erases the current value or setting for the specified option.

 CL[EAR] option ...

 where option represents one of the following clauses:
     BRE[AKS]
     BUFF[ER]
     COL[UMNS]
     COMP[UTES]
     SCR[EEN]
     SQL
     TIMI[NG]


SQL>

这与列的内容无关,而与它们在 SQL*Plus中的格式化方式有关。看看这个例子:

col首先,使用以下命令设置一些列的设置:

SQL> col empno format 9999
SQL> col ename format a5
SQL> col sal format 999g990d00
SQL>
SQL> select empno, ename, sal from emp where rownum < 4;

EMPNO ENAME         SAL
----- ----- -----------
 7369 SMITH      920,00
 7499 ALLEN    1.600,00
 7521 WARD     1.250,00

现在,清除这些设置并查看差异:

SQL> clear col
columns cleared
SQL> select empno, ename, sal from emp where rownum < 4;

     EMPNO ENAME             SAL
---------- ---------- ----------
      7369 SMITH             920
      7499 ALLEN            1600
      7521 WARD             1250

SQL>

如您所见,这些列中的值没有受到影响 - 只是它们的显示方式。


推荐阅读