【问题标题】:Equivalent of MySQL's \G in Oracle's SQL*Plus相当于 Oracle 的 SQL*Plus 中 MySQL 的 \G
【发布时间】:2010-11-16 10:53:16
【问题描述】:

在 Oracle 的 SQL*Plus 中,SELECT 的结果以表格方式显示。有没有办法以键值方式显示一行(如 MySQL 的\G option)?

我正在处理的数据库(架构不是我定义的)有一堆名为 e.g. YN_ENABLED(YN = 是 否)它们是 CHAR(1)。因此,当我进行查询时,我会得到类似的结果

ID_MYTABLE   Y Y Y
------------ - - -
3445         Y N Y

所以不清楚哪些列有哪些值(没有在另一个窗口中打开架构)。

【问题讨论】:

标签: oracle sqlplus


【解决方案1】:

没有内置在 SQL PLus 中,但 Tom Kyte 提供了一个名为 print_table 的过程来执行此操作。你可以这样运行它:

SQL> exec print_table ('select * from mytable where id_mytable=123');

And see results like:

ID_MYTABLE      : 123
YN_ENABLED      : Y
YN_SOMETHING    : N
...

【讨论】:

  • Oracle 从 2010 年开始实施了吗?我想在 SQL Developer 中使用它来导出更清晰的结果...
【解决方案2】:

我知道您的问题是关于 SQL*PLus,但您可能想知道 Oracle 的 SQL Developer 可以做到这一点。可以通过右键单击查询结果并选择“单个记录视图...”来使用该功能。

【讨论】:

    【解决方案3】:

    如果您不想(或不能)在您的服务器上安装新程序,可以使用以下技巧:

    1. 在 Oracle SQL Developer 中选择感兴趣的一行(或多行) 查询结果窗口。
    2. 在 Oracle SQL Developer 中使用 shift-control-c 复制行和 到剪贴板的标题。
    3. 粘贴到您最喜欢的电子表格中 (例如,MS Excel)。现在您有了行中的记录。
    4. 复制您刚刚粘贴到电子表格中的行
    5. 使用电子表格程序的“选择性粘贴 - 转置”功能将值粘贴到新电子表格中。现在您的记录应该在列中。

    【讨论】:

      【解决方案4】:

      来晚了,但我发现了这个

      SQL> select * from xmltable('ROWSET/ROW/*' passing xmltype(cursor(select * from emp where rownum = 1
      )) columns name varchar2(30) path 'node-name(.)', value varchar2(30) path '.');
      

      找到here

      【讨论】:

        猜你喜欢
        • 2012-02-21
        • 1970-01-01
        • 2016-03-08
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 2012-03-09
        • 2010-11-30
        相关资源
        最近更新 更多