アプリが実行している複雑なクエリの一部には、次の行が含まれています:...(内部クエリ)
SELECT
...
NULL as column_A,
NULL as column_B,
...
FROM
...
null値で列を作成するこの構文は、DB2では許可されていませんが、[〜#〜] mssql [〜#〜]およびOracle DB。技術的には、次のように変更できます。
'' as column_A,
'' as column_B,
しかし、これはまったく同じ意味ではなく、計算結果を損なう可能性があります。他の構文を使用してDB2でnull値の列を作成するにはどうすればよいですか?
DB2は強く型付けされているため、NULLがどの種類の列であるかをDB2に伝える必要があります。
select
...
cast(NULL as int) as column_A,
cast(NULL as varchar(128)) as column_B,
...
FROM
...
Db2 LUWの場合、バージョン9.7以降、(必要に応じて)特定のデータ型に明示的にキャストせずにNULL
値を使用できます。
NULL
自体は、暗黙的にVARCHAR(1)
にキャストされます。このナレッジセンターのページでは、他の場合に何が起こるかを示します。 型指定されていない式のデータ型の決定
例
db2 "describe values ( NULL, + NULL, NULL || NULL )"
Column Information
Number of columns: 3
SQL type Type length Column name Name length
-------------------- ----------- ------------------------------ -----------
449 VARCHAR 1 1 1
997 DECFLOAT 16 2 1
449 VARCHAR 508 3 1
そして
db2 "describe values NULL, 1"
Column Information
Number of columns: 1
SQL type Type length Column name Name length
-------------------- ----------- ------------------------------ -----------
497 INTEGER 4 1 1