プライマリ・コンテンツに移動
SQL*Plus®ユーザーズ・ガイドおよびリファレンス
リリース1 (12.1)
B71396-03
目次へ移動
目次
索引へ移動
索引

前
次

列の書式設定について

SQL*PlusのCOLUMNコマンドを使用して、列ヘッダーを変更し、問合せ結果の列データの書式を再設定できます。

列ヘッダーの変更について

列ヘッダーを表示する場合は、デフォルトのヘッダーを使用するか、またはデフォルトのヘッダーをCOLUMNコマンドで変更できます。次の各項では、デフォルトのヘッダーの導出方法およびCOLUMNコマンドを使用してデフォルトのヘッダーを変更する方法について説明します。詳細は、「COLUMN」コマンドを参照してください。

デフォルトのヘッダー

SQL*Plusでは、問合せ結果を表示するときに、列または式の名前がデフォルトの列ヘッダーとして使用されます。ただし、多くの場合、列名は短く暗号のようで、式名は理解するのが困難です。

デフォルトのヘッダーの変更

次の形式でCOLUMNコマンドのHEADING句を使用すると、さらに有効な列ヘッダーを定義できます。

COLUMN column_name HEADING column_heading
LAST NAME                 MONTHLY SALARY COMMISSION
------------------------- -------------- ----------
Russell                            14000         .4
Partners                           13500         .3
Errazuriz                          12000         .3
Cambrault                          11000         .3
Zlotkey                            10500         .2

注意:

新しいヘッダーは、別のヘッダーを入力するか、列の書式をリセットするか、またはSQL*Plusを終了するまで有効です。

列ヘッダーを複数の単語に変更するには、COLUMNコマンドの入力時に、新しいヘッダーを一重引用符または二重引用符で囲みます。列ヘッダーを複数の行に表示するには、新しい行を開始する位置に垂直バー(|)を使用します。(SETコマンドのHEADSEP変数の設定を変更すると、垂直バー以外の文字を使用できます。詳細は、「SET」コマンドを参照してください。)

LAST                         MONTHLY
NAME                          SALARY COMMISSION
------------------------- ---------- ----------
Russell                        14000         .4
Partners                       13500         .3
Errazuriz                      12000         .3
Cambrault                      11000         .3
Zlotkey                        10500         .2
LAST                         MONTHLY
NAME                          SALARY COMMISSION
========================= ========== ==========
Russell                        14000         .4
Partners                       13500         .3
Errazuriz                      12000         .3
Cambrault                      11000         .3
Zlotkey                        10500         .2

この時点で、次のように下線文字をダッシュに戻してください。

SET UNDERLINE '-'

注意:

ダッシュは、引用符で囲む必要があります。囲まない場合、ダッシュは、次の行へコマンドを継続することを示すハイフンとして解釈されます。

例6-1 列ヘッダーの変更

LAST_NAME、SALARYおよびCOMMISSION_PCTに新しいヘッダーを指定してEMP_DETAILS_VIEWからレポートを生成するには、次のコマンドを入力します。

COLUMN LAST_NAME        HEADING 'LAST NAME'
COLUMN SALARY           HEADING 'MONTHLY SALARY'
COLUMN COMMISSION_PCT   HEADING COMMISSION
SELECT LAST_NAME, SALARY, COMMISSION_PCT
FROM EMP_DETAILS_VIEW
WHERE JOB_ID='SA_MAN';

例6-2 列ヘッダーの分割

SALARYおよびLAST_NAME列にそれぞれMONTHLY SALARYおよびLAST NAMEというヘッダーを付け、新しいヘッダーを2行に分割するには、次のように入力します。

COLUMN SALARY HEADING 'MONTHLY|SALARY'
COLUMN LAST_NAME HEADING 'LAST|NAME'

この時点で、次のように/(スラッシュ)コマンドで問合せを再実行します。

 /

例6-3 下線文字の設定

ヘッダーに下線を付けるために使用する文字を等号に変更し、問合せを再実行するには、次のコマンドを入力します。

SET UNDERLINE =
/

NUMBER列の書式設定について

NUMBER列を表示する場合は、SQL*Plusのデフォルトの表示幅を使用するか、またはCOLUMNコマンドを使用してデフォルトの表示幅を変更します。次の各項では、デフォルトの表示およびCOLUMNコマンドでデフォルトを変更する方法について説明します。書式モデルは、新しい書式モデルを入力するか、または次のコマンドを使用して列の書式をリセットするまで有効です。

COLUMN column_name CLEAR

または、SQL*Plusを終了するまで有効です。

デフォルトの表示

NUMBER列の幅は、ヘッダーの幅か、FORMATの幅に符号用の1つの空白を加えた幅のどちらか大きい方に等しくなります。明示的にFORMATを使用しない場合、列の幅は、常にSET NUMWIDTHの値以上になります。

通常、SQL*Plusでは、数値は、SETコマンドのNUMWIDTH変数の値で決まる標準表示幅(通常は10)を最大幅として、必要なだけの桁数で表示されます。可能な場合、SET NUMWIDTHの値より大きい数値は、許容最大文字数で切り上げられるか、または切り捨てられます。数値が大きすぎる場合は、ハッシュが表示されます。

COLUMNコマンドで書式モデルを使用すると、NUMBER列に別の書式を選択できます。書式モデルとは、列の中に数値を表示する方法を表したもので、複数の9を使用して数字の桁を表します。

デフォルト表示の変更

COLUMNコマンドを使用すると、次に示すように、書式を設定する列および使用するモデルを識別できます。

COLUMN column_name FORMAT model

列の中の数値にカンマ、ドル記号、山カッコ(負の値を囲む)、および先行0(ゼロ)を追加するには、書式モデルを使用します。値を一定の小数桁数まで丸め、負の値の右側(左側でなく)にマイナス記号を表示し、指数表記で値を表示することもできます。

単一の列に複数の書式モデルを使用するには、使用するモデルを結合して1つのCOLUMNコマンドにします(例6-4を参照)。書式モデルのすべてのリストおよび詳細は、「COLUMN」を参照してください。

LAST                       MONTHLY
NAME                        SALARY COMMISSION
------------------------- -------- ----------
Russell                    $14,000         .4
Partners                   $13,500         .3
Errazuriz                  $12,000         .3
Cambrault                  $11,000         .3
Zlotkey                    $10,500         .2

ドル記号などの他の書式を使用し、0(ゼロ)値に空白ではなく0(ゼロ)を表示する場合は、表示する値として書式モデル内で0(ゼロ)を使用します。

例6-4 NUMBER列の書式設定

SALARYの表示にドル記号、カンマ、および0(ゼロ)値に対して空白ではなく数字の0(ゼロ)を使用するには、次のコマンドを入力します。

COLUMN SALARY FORMAT $99,990

この時点で、現行の問合せを再実行します。

/

データ型の書式設定について

データ型を表示する場合は、SQL*Plusのデフォルトの表示幅を使用するか、またはCOLUMNコマンドを使用してデフォルトの表示幅を変更します。書式モデルは、新しい書式モデルを入力するか、または次のコマンドを使用して列の書式をリセットするまで有効です。

COLUMN column_name CLEAR

または、SQL*Plusを終了するまで有効です。このマニュアルでは、データ型に次の型が含まれます。

  • CHAR

  • NCHAR

  • VARCHAR2 (VARCHAR)

  • NVARCHAR2 (NCHAR VARYING)

  • DATE

  • LONG

  • BLOB

    BFILE

  • CLOB

  • NCLOB

  • XMLType

デフォルトの表示

データ型列のデフォルトの幅は、データベース内の列の幅です。LONG列、BLOB列、BFILE列、CLOB列、NCLOB列またはXMLType列のデフォルトの幅は、SET LONGCHUNKSIZEまたはSET LONGのいずれか小さい方の値です。

SQL*Plusでは、書式が設定されていないDATE列のデフォルトの幅と書式は、データベースのNLS_DATE_FORMATパラメータによって決定されます。それ以外の場合、デフォルトの書式の幅はA9です。DATE列の書式設定の詳細は、「COLUMN」コマンドのFORMAT句を参照してください。

データ型のデフォルトの文字位置は、左揃えです。

デフォルト表示の変更

データ型またはDATEの表示幅は、COLUMNコマンドと、文字A(英数字の意)の後に列幅を表す数値を続けた書式モデルを使用して変更できます。

COLUMNコマンド内で、書式を設定する列および使用するモデルを次のように指定します。

COLUMN column_name FORMAT model

列ヘッダーより短い幅を指定した場合は、ヘッダーが切り捨てられます。詳細は、「COLUMN」コマンドを参照してください。

LAST  MONTHLY
NAME   SALARY COMMISSION
---- -------- ----------
Russ  $14,000         .4
ell

Part  $13,500         .3
ners

Erra  $12,000         .3
zuri
z


LAST  MONTHLY
NAME   SALARY COMMISSION
---- -------- ----------
Camb  $11,000         .3
raul
t

Zlot  $10,500         .2
key

SETコマンドのWRAP変数をON (デフォルト値)に設定した場合、例6-5に示すように、従業員名は4文字目の後で次の行へ折り返されます。WRAPをOFFに設定した場合、名前は4文字目の後で切り捨てられます。

システム変数WRAPは、すべての列を制御します。列に対するWRAPの設定は、COLUMNコマンドのWRAPPED、WORD_WRAPPEDおよびTRUNCATED句を指定すると上書きできます。これらの句の詳細は、「COLUMN」コマンドを参照してください。この章の後半でCOLUMNコマンドのWORD_WRAPPEDを使用します。

NCLOB、BLOB、BFILEまたはマルチバイトCLOBの各列をWORD_WRAPPEDオプションで書式設定することはできません。NCLOB、BLOB、BFILEまたはマルチバイトCLOBの各列をCOLUMN WORD_WRAPPEDで書式設定した場合、列データはCOLUMN WRAPPEDが適用されたかのように動作します。

注意:

列のヘッダーは、WRAPの設定、またはどのCOLUMNコマンド句の設定にも関係なく切り捨てられます。

この時点で、次のように列を元の書式に戻します。

COLUMN LAST_NAME FORMAT A10
Building
--------------------
Owned

createXML、extract、text、getStringValの各ファンクション、およびXMLTypeデータの作成と操作の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

例6-5 文字列の書式設定

LAST_NAME列の幅を4文字に設定し、現行の問合せを再実行するには、次のように入力します。

COLUMN LAST_NAME FORMAT A4
/

例6-6 XMLType列の書式設定

XMLType列の書式設定方法について説明する前に、XMLType列の定義を含む表を作成し、その表にデータを挿入する必要があります。XMLType列は、他のユーザー定義列と同様の方法で作成できます。XMLType列を含む表を作成するには、次のように入力します。

CREATE TABLE warehouses (
  warehouse_id  NUMBER(3),
  warehouse_spec  SYS.XMLTYPE,
  warehouse_name  VARCHAR2 (35),
  location_id  NUMBER(4));

warehouse_idおよびwarehouse_specの値を含む新しいレコードを新しいwarehouses表に挿入するには、次のように入力します。

INSERT into warehouses (warehouse_id, warehouse_spec)
  VALUES (100, sys.XMLTYPE.createXML(
  '<Warehouse whNo="100">
    <Building>Owned</Building>
  </Warehouse>'));

XMLType列の幅を20文字に設定し、XMLType列を選択するには、次のように入力します。

COLUMN Building FORMAT A20
SELECT
  w.warehouse_spec.extract('/Warehouse/Building/text()').getStringVal()
  "Building"
  FROM warehouses w;

列の表示属性のコピー

複数の列に同じ表示属性を設定する場合は、COLUMNコマンドのLIKE句を使用して入力すると、コマンドの長さを短くすることができます。LIKE句を使用すると、SQL*Plusで、前に定義した列の表示属性が新しい列にコピーされます。ただし、同じコマンドの別の句によって加えられた変更はコピーされません。

LAST        MONTHLY
NAME         SALARY    BONUS
---------- -------- --------
Russell     $14,000       $0
Partners    $13,500       $0
Errazuriz   $12,000       $0
Cambrault   $11,000       $0
Zlotkey     $10,500       $0

例6-7 列の表示属性のコピー

COMMISSION_PCT列に、SALARYに指定した表示属性と同じ表示属性を指定し、別のヘッダーを指定するには、次のコマンドを入力します。

COLUMN COMMISSION_PCT LIKE SALARY HEADING BONUS

次のように問合せを再実行します。

/

列の表示属性の表示およびリセット

列の現行の表示属性を表示するには、次に示すように、COLUMNコマンドおよびその後に列名のみを指定します。

COLUMN column_name

すべての列の現行の表示属性を表示するには、次のように、後ろに列名または句を指定せずにCOLUMNコマンドを入力します。

COLUMN

列の表示属性をデフォルト値にリセットするには、次に示すようにCOLUMNコマンドのCLEAR句を使用します。

COLUMN column_name CLEAR
columns cleared

例6-8 列の表示属性をデフォルトにリセットする方法

すべての列の表示属性をデフォルトにリセットするには、次のように入力します。

CLEAR COLUMNS

列の表示属性の非表示および表示について

特定の列に指定した表示属性を非表示および表示できます。列の表示属性を非表示にするには、次の形式でCOLUMNコマンドを入力します。

COLUMN column_name OFF

OFF句を使用すると、SQL*Plusで、列に対してデフォルトの表示属性が使用されますが、COLUMNコマンドで定義された属性は削除されません。COLUMNコマンドで定義した属性を表示するには、次のようにON句を使用します。

COLUMN column_name ON

折り返した列の値の後で文字の行を出力する方法

前述のとおり、SQL*Plusのデフォルトでは、列の値が列幅に収まらない場合、その値は追加行に折り返されます。折り返された出力行の後(または各行の後)にレコード・セパレータ文(字または空白の1行)を挿入する場合は、SETコマンドのRECSEPおよびRECSEPCHAR変数を使用します。

RECSEPを使用して、文字の行を出力するタイミングを決定できます。RECSEPをEACHに設定すると、各行の後に文字の行が出力されます。WRAPPEDに設定すると、折返し行の後に出力されます。OFFに設定すると、出力されません。RECSEPのデフォルトの設定は、WRAPPEDです。

RECSEPCHARは、各行に出力される文字を設定します。RECSEPCHARには、任意の文字を設定できます。

列の値が次の行に折り返される場合は、すべての単語を次の行に折り返すこともできます。この場合は、次に示すように、COLUMNコマンドのWORD_WRAPPED句を使用します。

COLUMN column_name WORD_WRAPPED
LAST_NAME                 JOB_TITLE            CITY
------------------------- -------------------- --------
King                      President            Seattle
Kochhar                   Administration Vice  Seattle
                          President
-------------------------------------------------------
De Haan                   Administration Vice  Seattle
                          President
-------------------------------------------------------
Russell                   Sales Manager        Oxford
Partners                  Sales Manager        Oxford
Hartstein                 Marketing Manager    Toronto

6 rows selected.

RECSEPをEACHに設定した場合、各行の後(この例では各部門の後)に文字の行が出力されます。

先へ進む前に、次のようにRECSEPをOFFに設定して、レコード・セパレータを出力しないようにします。

SET RECSEP OFF

例6-9 折り返した列の値の後で文字の行を出力する方法

列の値を折り返した後にダッシュの行を出力するには、次のコマンドを入力します。

SET RECSEP WRAPPED
SET RECSEPCHAR "-"

最後に、次の問合せを入力します。

SELECT LAST_NAME, JOB_TITLE, CITY
FROM EMP_DETAILS_VIEW
WHERE SALARY>12000;

この時点で、次のようにJOB_TITLE列の幅を制限し、必要な場合は、SQL*Plusですべての単語を次の行に折り返します。

COLUMN JOB_TITLE FORMAT A20 WORD_WRAPPED

次のように問合せを実行します。

/