web-dev-qa-db-ja.com

コマンドプロンプトのSELECTクエリからの出力をどのように見せかけるのですか?

コマンドプロンプトで単純なselectクエリを実行しましたが、出力行が1行で表示されません。下記参照:

SQL> set pagesize 2000
SQL> select * from xtern_empl_rpt ;

EMP LAST_NAME
--- --------------------------------------------------
FIRST_NAME                                         SSN
-------------------------------------------------- ---------
EMAIL_ADDR
--------------------------------------------------------------------------------

YEARS_OF_SERVICE
----------------
001 Hutt
Jabba                                              896743856
[email protected]
              18

002 Simpson
Homer                                              382947382
[email protected]
              20

003 Kent
Clark                                              082736194
[email protected]
               5

004 Kid
Billy                                              928743627
[email protected]
               9

005 Stranger
Perfect                                            389209831
[email protected]
              23

006 Zoidberg
Dr                                                 094510283
[email protected]
               1


6 rows selected.

SQL>

各行を1行に収めるのを手伝っていただけませんか。

編集

以下に試してみましたが、まだきれいではありません。

SQL> SET LINESIZE 4000
SQL> select * from xtern_empl_rpt ;

EMP LAST_NAME                                          FIRST_NAME
                          SSN       EMAIL_ADDR
                                                         YEARS_OF_SERVICE
--- -------------------------------------------------- -------------------------
------------------------- --------- --------------------------------------------
-------------------------------------------------------- ----------------
001 Hutt                                               Jabba
                          896743856 [email protected]
                                                                       18
002 Simpson                                            Homer
                          382947382 [email protected]
                                                                       20
003 Kent                                               Clark
                          082736194 [email protected]
                                                                        5
004 Kid                                                Billy
                          928743627 [email protected]
                                                                        9
005 Stranger                                           Perfect
                          389209831 [email protected]
                                                                       23
006 Zoidberg                                           Dr
                          094510283 [email protected]
                                                                        1

6 rows selected.

SQL>
8
Arup Rakshit

画面に収まるように列幅を設定します

例えば:

column EMAIL_ADDR format a30 

ここで、aは列幅です。 WRAを使用して列をラップできます。

column EMAIL_ADDR format a30 WRA

またはTRUは切り捨て、WORは単語の境界で分割します

例えば:

SQL> select * from emp;

        ID FIRST_NAME
---------- ------------------------------
LAST_NAME
------------------------------
EMAIL_ADDR
--------------------------------------------------
         1 Dazza
Smith
[email protected]

したがって、email_addrが300文字にパディングされているため、出力は少し読みにくいです(私のテーブルでは、sql * plusが出力のフォーマットに使用するvarchar2(300)として定義されていたため)。

最初に適切な線サイズを設定します:

   SQL> set linesize 100 

ここで、列が1行に収まるように列を設定できます(linesizeはcolの合計幅よりも大きくする必要があります):

   SQL> column email_addr format a30 
   SQL> column last_name format a20 
   SQL> column first_name format a20 
   SQL> select * from emp;

            ID FIRST_NAME           LAST_NAME            EMAIL_ADDR
    ---------- -------------------- -------------------- ------------------------------
             1 Dazza                Smith                [email protected]

これで、カラムは適切なサイズの端子に簡単に収まります。

あなたの場合、first_namelast_nameはvarchar2(50)ですが、それらのデータははるかに小さいため、column first_name format a15(last_nameと同じ)から始めます。メールの場合、列はvarchar2(100)ですが、最大サイズの出力は25文字だったため、最初にcolumn email format a25を入力します。

そうした場合、次のような出力が得られます(linesizeが十分に大きい場合)。

SQL> select * from xtern_empl_rpt ;

EMP LAST_NAME       FIRST_NAME     SSN       EMAIL_ADDR                YEARS_OF_SERVICE
--- --------------- -------------- --------- ------------------------- ----------------
001 Hutt            Jabba          896743856 [email protected]      18

最後に要求通り。 WRATRUおよびWOR。ちなみにWRAはデフォルトなので、使用する必要はありませんが、次のようにしたとします。

SQL> select * from test;

A
--------------------------------------
THIS IS A SIMPLE WRAPPING TEST

しかし、私はこれを10文字幅としてフォーマットしたかった:

S

QL> col a format a10 WRA
SQL> select * from test;

A
----------
THIS IS A
SIMPLE WRA
PPING TEST

WRAは、単語の途中かどうかに関係なく、文字列を10文字で切り取ることを意味します。単語の末尾でのみ改行したい場合(可能な場合は、10以上の単語を改行する必要があるため):

SQL> col a format a10 WOR
SQL> select * from test;

A
----------
THIS IS A
SIMPLE
WRAPPING
TEST

現在、出力はWordの境界で分割されており、必ずしも10文字ではありません。

最初の10文字だけが必要で、行の折り返しがない場合は、TRUを使用できます。

SQL> col a format a10 TRU
SQL> select * from test;

A
----------
THIS IS A
9
DazzaL

これで問題が解決するはずです:

set wrap off 
6
Musa almatri

次のようなものを試してください:

SET LINESIZE 120

(調整120から必要な最大幅まで)

4
user359040