在Oracle SQL * Plus中等效于SQL的\ G.

时间:2010-11-16 10:53:17

标签: oracle sqlplus

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

我正在处理的数据库(架构未由我定义)有一堆列,例如: YN_ENABLED(YN =是否),CHAR(1)。因此,当我进行查询时,我得到的结果如

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

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

4 个答案:

答案 0 :(得分:10)

没有内置于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
...

答案 1 :(得分:3)

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

答案 2 :(得分:1)

如果你不想(或不能)在你的服务器上安装新程序,这可能是一个诀窍:

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

答案 3 :(得分:1)

迟到了,但我发现了这个

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