Ответ 1
DB2 строго типизирована, поэтому вам нужно сообщить DB2, какой столбец имеет ваш NULL:
select
...
cast(NULL as int) as column_A,
cast(NULL as varchar(128)) as column_B,
...
FROM
...
Часть сложного запроса, выполняемого нашим приложением, содержит строки: ... (внутренний запрос)
SELECT
...
NULL as column_A,
NULL as column_B,
...
FROM
...
Этот синтаксис создания столбцов со значениями null не разрешен в DB2, хотя он полностью в порядке в MSSQL и Oracle. Технически я могу изменить его на:
'' as column_A,
'' as column_B,
Но это не имеет точно такого же значения и может повредить наши результаты расчета. Как создать столбцы с нулевыми значениями в DB2 с использованием другого синтаксиса?
DB2 строго типизирована, поэтому вам нужно сообщить DB2, какой столбец имеет ваш NULL:
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