如何在SQL(Oracle)中自定义/格式化DESCRIBE命令的输出?

zed5wv10  于 2023-02-03  发布在  Oracle
关注(0)|答案(2)|浏览(243)

我创建了一个表BORROW,它具有以下属性和相应列的数据类型,如下所示:

SQL> CREATE TABLE BORROW
  2  (
  3  LOANNO VARCHAR2(5),
  4  CNAME VARCHAR2(20),
  5  BNAME VARCHAR2(20),
  6  AMOUNT NUMBER(8,2)
  7  );

Table created.

SQL> DESCRIBE BORROW;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 LOANNO                                             VARCHAR2(5)
 CNAME                                              VARCHAR2(20)
 BNAME                                              VARCHAR2(20)
 AMOUNT                                             NUMBER(8,2)

当我运行DESCRIBE命令时,我希望它显示为如图所示:(https://i.stack.imgur.com/V001t.jpg
有人知道怎么做吗?
提前感谢:)

daolsyd0

daolsyd01#

DESCRIBE是SQLPlus命令,不可配置。但您可以自己查询数据字典,并以任何方式显示它。如果您想要单一大小的列,则必须执行一些条件逻辑,因为Oracle表示“大小”的方式取决于数据类型和“大小”的含义(字符长度与存储它所需的字节数,数字精度与精度+小数位数与存储它所需的字节数,等等。)

SELECT column_name field_name,
       data_type,
       CASE WHEN (data_type LIKE '%CHAR%') THEN TO_CHAR(char_length)
            WHEN (data_type LIKE '%NUMBER%') THEN '('||NVL(TO_CHAR(data_precision),'*')||','||NVL(TO_CHAR(data_scale),'*')||')'
            WHEN (data_type = 'RAW') THEN TO_CHAR(data_length)
            ELSE NULL
       END "size"
  FROM all_tab_columns
 WHERE table_name = 'BORROW'
 ORDER BY column_id
zkure5ic

zkure5ic2#

  • Oracle SQL* 中的DESCRIBE命令没有以指定格式显示字段名、数据类型和大小的选项。但是,可以将DESCRIBE命令与其他SQL命令结合使用以获得所需的输出。一种方法是查询USER_TAB_COLUMNS视图。它包含关于当前模式中所有表中所有列的信息。
  • 您可以使用以下查询来获取所需的输出:*
SELECT column_name as "FIELDNAME", data_type as "DATATYPE", data_length as "SIZE"
FROM user_tab_columns
WHERE table_name = 'BORROW';

相关问题