2010-11-16 662 views
8

在Oracle的SQL * Plus中,SELECT的結果以表格形式顯示。有沒有辦法以鍵值方式顯示行(如MySQL的\G option)?Oracle的SQL * Plus中的 G的等價物

我正在處理的數據庫(模式不是由我定義的)有一堆名爲例如YN_ENABLED(YN =是否),它們是CHAR(1)。所以,當我做一個查詢我得到這樣

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

結果所以它不是真正清楚哪些列具有哪些值(無需架構在另一個窗口中打開)。

+1

這OTN線http://forums.oracle.com/forums/thread.jspa?threadID=923884討論。 – codaddict 2010-11-16 10:56:43

+0

謝謝!我試過谷歌搜索,但唉「相當於\ G」不太可Googleable ..感謝您的鏈接。 – 2010-11-16 10:59:13

回答

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 
... 
+0

自2010年以來Oracle是否實施了它?我想在SQL Developer中使用它來導出更清晰的結果... – GournaySylvain 2016-07-11 10:53:47

3

我知道你的問題是關於SQL * PLus,但你可能有興趣知道Oracle的SQL Developer可以做到這一點。右鍵單擊查詢結果並選擇「Single Record View ...」可以使用該功能。

1

這裏的,如果你不想(或不能)在服務器上安裝一個新的過程,可能在緊要關頭做了一招:

  1. 在Oracle選擇感興趣的行(或列) SQL Developer 查詢結果窗口。
  2. 在Oracle SQL Developer中使用shift-control-c將行和 標題複製到剪貼板。
  3. 粘貼到您最喜歡的電子表格 (例如,MS Excel)。現在你有行記錄。
  4. 將剛剛粘貼到電子表格中的行復制到電子表格
  5. 使用電子表格程序的「選擇性粘貼 - 轉置」功能將這些值粘貼到新的電子表格中。現在你的記錄應該在列中。
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