我们的应用程序正在运行的复杂查询的一部分包含以下行:...(内部查询)
SELECT
...
NULL as column_A,
NULL as column_B,
...
FROM
...
这种使用ORACLNULORACL值创建列的语法在DB2中是不允许的,但在MSSQL和数据库中完全可以。从技术上讲,我可以将其更改为:
'' as column_A,
'' as column_B,
但这并不具有完全相同的含义,并且可能会破坏我们的计算结果。如何使用其他语法在DB2中创建包含空值的列?
发布于 2010-03-25 01:55:27
DB2是强类型的,所以您需要告诉DB2您的NULL是哪种列:
select
...
cast(NULL as int) as column_A,
cast(NULL as varchar(128)) as column_B,
...
FROM
...
发布于 2018-09-18 01:36:14
对于Db2 LUW,从版本9.7开始,您可以(如果愿意)使用NULL
值,而无需显式地将其转换为特定的数据类型。
NULL
本身将被隐式转换为VARCHAR(1)
。此知识中心页面将显示在其他情况下发生的情况:Determining data types of untyped expressions
示例
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
https://stackoverflow.com/questions/2509233
复制相似问题