コマンドプロンプトで単純な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>
画面に収まるように列幅を設定します
例えば:
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_name
とlast_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
最後に要求通り。 WRA
TRU
および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
これで問題が解決するはずです:
set wrap off
次のようなものを試してください:
SET LINESIZE 120
(調整120
から必要な最大幅まで)