プライマリ・コンテンツに移動
Oracle® Databaseユーティリティ
12cリリース1 (12.1.0.2)
B71303-09
目次へ移動
目次
索引へ移動
索引

前
次

WHEN、NULLIFおよびDEFAULTIF句の使用例

例10-2から例10-5に、異なる条件でWHEN句、NULLIF句およびDEFAULTIF句を使用した場合の結果を示します。これらの例では、空白またはスペースはピリオド(.)で示されています。col1およびcol2は、データベースのVARCHAR2(5)列です。

例10-2 DEFAULTIF句の無評価

制御ファイルが次のように指定されています。

(col1 POSITION (1:5),
 col2 POSITION (6:8) CHAR INTEGER EXTERNAL DEFAULTIF col1 = 'aname')

データ・ファイルには次の情報が格納されています。

aname...

例10-2では、行のcol1anameと評価され、col2が長さが0(「...」ですが、後続の空白は位置フィールドでは切り捨てられます)であるNULLと評価されます。

SQL*Loaderでcol2にロードされた最終値が確認される場合、WHEN句およびNULLIF句は評価されません。フィールド長(フィールド評価の結果、0と評価された長さ)が確認されます。したがって、SQL*Loaderでは、col2の最終値にNULLが設定されます。DEFAULTIF句は評価されず、行はcol1の場合はanamecol2の場合はNULLとしてロードされます。

例10-3 DEFAULTIF句の評価

制御ファイルが次のように指定されています。

.
.
.
PRESERVE BLANKS
.
.
.
(col1 POSITION (1:5),
 col2 POSITION (6:8) INTEGER EXTERNAL DEFAULTIF col1 = 'aname'

データ・ファイルには次の情報が格納されています。

aname...

例10-3では、行のcol1が再度anameと評価されます。col2は、PRESERVE BLANKSが指定された場合、後続の空白が切り捨てられないため、「...」と評価されます。

SQL*Loaderでcol2にロードされた最終値が確認される場合、WHEN句およびNULLIF句は評価されません。0でなく3と評価されたフィールド評価からフィールド長が確認されます。

次に、SQL*LoaderではDEFAULTIF句が評価されます。col1anameanameと同じであるため、真と評価されます。

col2は数値フィールドであるため、SQL*Loaderではcol2の最終値に0が設定されます。行は、col1の場合は「aname」、col2の場合は0としてロードされます。

例10-4 DEFAULTIF句を使用した位置の指定

制御ファイルが次のように指定されています。

(col1 POSITION (1:5), 
 col2 POSITION (6:8) INTEGER EXTERNAL DEFAULTIF (1:5) = BLANKS)

データ・ファイルには次の情報が格納されています。

.....123

例10-4では、行のcol1が長さが0(...ですが、後続の空白は切り捨てられます)であるNULLと評価されます。col2は、123と評価されます。

SQL*Loaderでcol2にロードされる最終値が設定される場合、WHEN句およびNULLIF句は評価されません。0でなく3と評価されたフィールド評価からフィールド長が確認されます。

次に、SQL*LoaderではDEFAULTIF句が評価されます。.....である(1:5)を、真と評価されているBLANKSと比較されます。したがって、col2が数値フィールド(integer EXTERNALは数値)のため、SQL*Loaderではcol2の最終値に「0」が設定されます。行は、col1の場合はNULLcol2の場合は0としてロードされます。

例10-5 DEFAULTIF句を使用したフィールド名の指定

制御ファイルが次のように指定されています。

(col1 POSITION (1:5), 
 col2 POSITION(6:8) INTEGER EXTERNAL DEFAULTIF col1 = BLANKS)

データ・ファイルには次の情報が格納されています。

.....123

例10-5では、行のcol1が長さが0(...ですが、後続の空白は切り捨てられます)であるNULLと評価されます。col2は、123と評価されます。

SQL*Loaderでcol2の最終値が確認される場合、WHEN句およびNULLIF句は評価されません。0でなく3と評価されたフィールド評価からフィールド長が確認されます。

次に、SQL*LoaderではDEFAULTIF句が評価されます。評価の一部として、col1のフィールド評価がNULLであることが確認されます。NULLのため、DEFAULTIF句は偽と評価されます。したがって、SQL*Loaderではcol2の最終値に、フィールド評価の元の値である123が設定されます。行は、col1の場合はNULLcol2の場合は123としてロードされます。