代码之家  ›  专栏  ›  技术社区  ›  Adrian Smith

相当于Oracle的SQL*Plus中MySQL的\G

  •  9
  • Adrian Smith  · 技术社区  · 14 年前

    在Oracle的SQL*Plus中,选择的结果以表格形式显示。是否有方法以键值方式显示行(如MySQL的 \G option )?

    我正在处理的数据库(模式不是由我定义的)有一堆名为e.g.的列。 YN_ENABLED (YN=是-否)是 CHAR(1) . 所以当我做一个查询时,我得到的结果是

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

    因此,还不清楚哪些列有哪些值(在另一个窗口中没有打开模式)。

    4 回复  |  直到 14 年前
        1
  •  10
  •   Tony Andrews    14 年前

    不是内置在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
    ...
    
        2
  •  3
  •   Leigh Riffel    14 年前

    我知道你的问题是关于SQL*PLus的,但是你可能有兴趣知道Oracle的SQL开发人员可以做到这一点。右键单击查询结果并选择“单记录视图…”可以使用此功能。

        3
  •  2
  •   Peter Gluck    11 年前

    如果您不想(或不能)在服务器上安装新过程,下面是一个可以在紧急情况下使用的技巧:

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

    迟到了,但我发现了这个

    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