DB2: Не разрешать столбец "NULL"? - PullRequest
23 голосов
/ 24 марта 2010

Часть сложного запроса, который выполняется нашим приложением, содержит строки: ... (внутренний запрос)

SELECT
...
NULL as column_A,
NULL as column_B,
...
FROM
...

Этот синтаксис создания столбцов со значениями null недопустим в DB2, хотя в MSSQL и Oracle DB все в порядке. Технически я могу изменить это на:

'' as column_A,
'' as column_B, 

Но это не имеет того же значения и может повредить нашим результатам вычислений. Как я могу создать столбцы с нулевыми значениями в DB2, используя другой синтаксис ??

Ответы [ 2 ]

46 голосов
/ 24 марта 2010

DB2 строго типизирована, поэтому вам нужно указать DB2, какой тип столбца у вас NULL:

select 
   ...
   cast(NULL as int) as column_A,
   cast(NULL as varchar(128)) as column_B,
   ...
FROM
   ...
0 голосов
/ 17 сентября 2018

Для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...