gpt4 book ai didi

sql - 如何编写条件 "x = y",使其在 x 和 y 均为 NULL 时为真?

转载 作者:行者123 更新时间:2023-12-03 03:58:19 25 4
gpt4 key购买 nike

我正在使用以下查询:

SELECT tblTxn.Currency, tblTxn.Amount, tblTxn.Desc, tblAccounts.Account, tblTxn.Type
FROM tblAccounts
INNER JOIN tblTxn ON (tblAccounts.Currency = tblTxn.Currency)
WHERE
tblTxn.Type=tblAccounts.Type OR
(tblAccounts.Type Is Null And tblAccounts.Type Is Null);

这里tblTxn.TypetblAccounts.Type可以有值或空值。
我需要两者都匹配。空值显示预期结果,但实际值则不然。

如何解决这个问题?

<小时/>

我在 MS Access 2007 中使用查询。根据以下解决方案,我调整了查询​​,如下所示:

SELECT tblTxn.Currency, tblTxn.Amount, tblTxn.Desc, tblAccounts.Account, tblTxn.Type FROM tblAccounts INNER JOIN tblTxn ON tblAccounts.Currency = tblTxn.Currency WHERE Nz(tblTxn.Type,0) = Nz(tblAccounts.Type,0)

现在正在显示预期的结果。 感谢您的大力支持。注意。(函数 Nz(Value, [ValueIfNull]) 是 Access 中 COALESCE 的替代方法。)

我想知道一件事,如果我使用 WHERE tblTxn.Type=tblAccounts.Type OR Nz(tblTxn.Type,0) = Nz(tblAccounts.Type,0),它会显示相同的结果。当您仅匹配空值时,您的查询如何处理非空值?

最佳答案

您的查询检查tblAccounts.Type Is Null两次。如果将一个 tblAccounts.Type Is Null 条件替换为 tblTxn.Type Is Null,则查询将起作用。

你也可以这样做:

DECLARE @FakeString VARCHAR(10)
SET @FakeString = '!@#$%^&'

SELECT tblTxn.Currency, tblTxn.Amount, tblTxn.Desc, tblAccounts.Account, tblTxn.Type
FROM tblAccounts
INNER JOIN tblTxn ON tblAccounts.Currency = tblTxn.Currency
WHERE
ISNULL(tblTxn.Type, @FakeString) = ISNULL(tblAccounts.Type, @FakeString)

如果值是整数,你可以这样做

DECLARE @FakeType INT
SET @FakeType = -9999

关于sql - 如何编写条件 "x = y",使其在 x 和 y 均为 NULL 时为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6159565/

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