12

コマンド プロンプトで簡単な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
jabba@thecompany.com
              18

002 Simpson
Homer                                              382947382
homer@thecompany.com
              20

003 Kent
Clark                                              082736194
superman@thecompany.com
               5

004 Kid
Billy                                              928743627
billythkid@thecompany.com
               9

005 Stranger
Perfect                                            389209831
nobody@thecompany.com
              23

006 Zoidberg
Dr                                                 094510283
crustacean@thecompany.com
               1


6 rows selected.

SQL>

各行を一行にするのを手伝ってくれませんか?

編集

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

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 jabba@thecompany.com
                                                                       18
002 Simpson                                            Homer
                          382947382 homer@thecompany.com
                                                                       20
003 Kent                                               Clark
                          082736194 superman@thecompany.com
                                                                        5
004 Kid                                                Billy
                          928743627 billythkid@thecompany.com
                                                                        9
005 Stranger                                           Perfect
                          389209831 nobody@thecompany.com
                                                                       23
006 Zoidberg                                           Dr
                          094510283 crustacean@thecompany.com
                                                                        1

6 rows selected.

SQL>
4

3 に答える 3

10

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

例えば:

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
d_dazzal@dazzal.com

そのため、email_addr が 300 文字にパディングされたため、出力を読むのは少し難しいです (私のテーブルでは、sql*plus が出力の書式設定に使用する varchar2(300) として定義されているため)。

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

   SQL> set linesize 100 

列が 1 行に収まるように設定できます (行サイズは列幅の合計よりも大きくする必要があります)。

   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                d_dazzal@dazzal.com

そのため、列は適切なサイズの端末に簡単に収まるようになりました。

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

それを行った場合、次のような出力が得られるはずです(行サイズが十分に大きい場合):

SQL> select * from xtern_empl_rpt ;

EMP LAST_NAME       FIRST_NAME     SSN       EMAIL_ADDR                YEARS_OF_SERVICE
--- --------------- -------------- --------- ------------------------- ----------------
001 Hutt            Jabba          896743856 jabba@thecompany.com      18

やっとリクエスト通り。WRA TRUWORWRAちなみに、デフォルトなので、使用する必要はありませんが、次のようにします。

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

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

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

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

A
----------
THIS IS A
于 2013-01-27T13:20:55.843 に答える
9

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

set wrap off 
于 2014-11-09T20:33:39.663 に答える
7

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

SET LINESIZE 120

120(必要な最大幅に調整してください。)

于 2013-01-27T12:53:12.560 に答える