gpt4 book ai didi

sql - SQL 比较和空值的问题

转载 作者:行者123 更新时间:2023-12-03 04:44:21 26 4
gpt4 key购买 nike

我有一个更新查询,当一个表中的值与另一个表中的字段不匹配时,该查询会更新另一个表中的字段。

UPDATE  table1
SET a.field1 = b.field3
FROM table1 a ,
table2 b
WHERE a.field2 = b.field2
AND a.field1 <> b.field3

我遇到的问题是,当 a.field1 为 null 且 b.field3 为值时,或者 a.field1 为值且 b.field3 为 null 时,它不会被拾取。

我通过添加以下内容解决了这个问题...

UPDATE  table1
SET a.field1 = b.field3
FROM table1 a ,
table2 b
WHERE a.field2 = b.field2
AND ( a.field1 <> b.field3
OR (a.field1 IS NOT NULL
AND b.field3 IS NULL)
OR (a.field1 IS NULL
AND b.field3 IS NOT NULL)
)

我的问题更集中在为什么会发生这种情况以及如何最好地构建查询以防止这种情况发生?

最佳答案

问题出在 NULL 比较上。如果 a.field1 或 b.field3 为 NULL,则需要使用 IS NULL 或 IS NOT NULL 语句。您可以使用 ISNULL 函数为 a.field1 和 b.field3 使用默认值。

ISNULL(a.field1,0) <> ISNULL(b.field3,0)

在本例中,与值 0 进行比较。

SELECT IIF(NULL=NULL,'true','false')  -- The result is false.  Amazing!

关于sql - SQL 比较和空值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15929269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com