回答

收藏

DB2:不允许使用“淣ULL”列吗?

技术问答 技术问答 281 人阅读 | 0 人回复 | 2023-09-14

我们的应用程序正在运行的复杂查询的一部分包含以下几行:…(内部查询)
$ `$ P2 F+ f) f; M3 h& v8 c7 pSELECT1 H3 _6 T, c2 M
...
/ r: [. l& m; y, q8 h8 tNULL as column_A,
/ c0 O7 i9 [- M6 K) a4 bNULL as column_B,2 h+ H2 L5 ?& K8 H: U/ P7 V
...) f9 v& M4 }  C% E
FROM$ k/ N9 c; g' D8 L; P. j) Q1 S' R5 H
...1 k: G9 Y7 V' L! \3 V* l$ ?/ T
在DB2中不允许使用这种用 值创建列的语法,尽管在 MSSQLOracle DB中完全可以。从技术上讲,我可以将其更改为:
: V. e% s7 Y& i( _! O'' as column_A,  Z% i+ v: A0 G& N6 m; ]
'' as column_B,0 P+ ^1 E; i. A) `( }
但这并不完全相同,可能会破坏我们的计算结果。如何使用其他语法在DB2中创建具有空值的列?
8 V; z5 f/ e8 G2 Q& A               
5 X1 m' d" c* Y; t6 `$ s; V9 k4 [解决方案:
) ]% a! U3 j$ ]6 F9 W                $ A( B, F1 L; B. G5 E

- w7 j/ l: z' f8 J2 I
& {$ ~- N9 I) u5 W' O1 U$ N5 D                DB2是强类型的,因此您需要告诉DB2 NULL是哪种类型的列:
% W7 X& I  ]2 Z9 ~7 [1 dselect . t) I+ t& s# u3 x
   ...
1 _9 T& d1 v) B( y" ~- L2 h   cast(NULL as int) as column_A,
2 t6 a( b; B" `: x! V   cast(NULL as varchar(128)) as column_B,
. ~6 E4 w1 @( }5 o   ...7 @' A" l- E7 @- u
FROM* v9 J: p5 U4 s" [! m. _7 q( M! @5 X
   ...
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则