我们的应用程序正在运行的复杂查询的一部分包含以下几行:…(内部查询) 5 P/ ^3 F M3 JSELECT 5 y6 m4 `# a* Q P' I9 N" s- P...8 f) D; v( |+ K9 d
NULL as column_A, l, v0 A3 b- E: _0 m; m* }NULL as column_B, * a! m) u" l, [" A' L4 l7 X8 l% V..." ]3 x2 s' v) Y( [: H) }4 \
FROM ) i* }" J. [9 r! H) w2 K...# _$ K$ R% q% p+ _- B6 O* Z4 [
在DB2中不允许使用这种用 空 值创建列的语法,尽管在 MSSQL 和 Oracle DB中完全可以。从技术上讲,我可以将其更改为:' D) F# C2 _6 f8 J
'' as column_A, . K1 g; B R3 m'' as column_B,) k$ w. @ O6 c" n$ ?9 x2 s
但这并不完全相同,可能会破坏我们的计算结果。如何使用其他语法在DB2中创建具有空值的列?' \* u) a' _$ P2 B7 W8 y5 i9 P
7 X# t. X3 I1 q7 `" d 解决方案: 9 E: c3 j- Y0 i2 c 1 F- h- l0 d- c( x
4 j( c* G4 J/ C- \
* ]# x% J" {. ~/ y DB2是强类型的,因此您需要告诉DB2 NULL是哪种类型的列: U2 F' ]$ M. C. y
select $ ? f |; B1 P, ?& [3 R
... 7 Z8 k# D% u8 I$ ~5 P cast(NULL as int) as column_A," n, d) x) W7 @$ F- }# g0 B' k* W5 n
cast(NULL as varchar(128)) as column_B,3 M) U" k) h C3 q: U, t) z! t
...2 Y: }/ j- H. X$ H4 Z
FROM @" g6 Z$ U, G; Q* e+ S2 \
...