回答

收藏

用可以为null列测试不等式

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

因此,今天早上我问了一个问题,我没有正确地说这句话,所以我得到了很多关于为什么NULL与任何东西相比,它会被赋予NULL / FALSE的回答。1 o4 H! `0 b% L9 n# m
我的实际问题是,数据库专家可以测试两列NULL尊重时间的不等式方式是什么?我的问题与这个问题完全相反。' o) j, R  [# q4 T, {) j% X
要求如下,A和B为两列:
! i  C/ h: n4 `) _5 ]a)如果A和B都为NULL,它们相等,然后返回FALSE
6 h, n  r: Y) u/ w& {  Nb)如果A和B都不为NULL,则返回A  B
# Q3 {( V0 L- f: U7 M- {6 X! rc)如果A或B为NULL,它们不相等,返回TRUE
1 P; G4 N2 m" Q8 H) t                                                               
7 W; X& r* h9 y1 a    解决方案:                                                               
- b! }. R) m4 X/ B1 i. `4 [3 u$ ]5 Z: t                                                                根据数据类型和列的可能值:( ~$ S9 q6 A* m# ~" X* T. {  C( t
COALESCE(A,-1)  COALESCE(B,-1)诀窍是找个 永远不会    出现在您的数据中的值(我在这里使用-1)。' D7 j  ?& U/ k$ }8 q8 a' E: z
另一种方法是:! U) y5 _* ^, I+ B0 A1 [" \  y$ X/ J
(A  B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL)这可能是一个取决于你的具体情况的问题RDBMS处理NULL方式ANSI标准,这应该能够为你提供所需的信息,但无论如何,谁会遵循标准。
: Y, T, m0 B; H8 s5 M7 nPS-我还应该指出,使用COALESCE对比列时索引的使用可能无效。检查您的查询计划和性能,看看是否有问题。
, w0 k5 x) Z2 f% T( |' VPPS-我刚注意到OMG Ponies提到Informix不支持COALESCE。我相信这是一个ANSI标准函数,但请参考我上面提到的标准函数…
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则