gpt4 book ai didi

SQL DB2 - WHERE 子句中的条件逻辑

转载 作者:行者123 更新时间:2023-12-04 02:20:37 24 4
gpt4 key购买 nike

我需要根据位置 ID 提取记录,但我有两个字段可能包含传入条件....

像这样

SELECT * FROM tbl
WHERE myVar = locationID
IF LocationID = 0
myVar = location2ID

这是一个“合乎逻辑”的例子...

我觉得我可以

WHERE myVar = CASE WHEN locationID = 0 THEN location2ID ELSE locationID END

尽管我读过应该避免在 WHERE 子句中使用 CASE...?为什么?或者这样可以吗?- 无论哪种方式都失败了

WHERE CASE WHEN locationID=0 THEN location2ID=myVAr ELSE locationID=myVar END

也失败了

谢谢

抱歉让 children 感到困惑 - 并不是要“模棱两可” - 看起来 #2 会做我想做的事 - 但这里要求澄清的是问题......

该表存储两个位置,让我们调用 CURRENT_LOC 和 ORIGINAL_LOC...在大多数情况下,它们都有数据,但在某些情况下“事物”没有移动...因此 CURRENT_LOC 为“0”。我的问题是我将传递一个 LOCATION ID,我想要 CURRENT_LOC 匹配的记录,或者如果 CURRENT_LOC=0 那么我还想要 ORIGINAL_LOC...匹配的地方...

这对讨论有帮助吗?我希望。

最佳答案

WHERE myVar = COALESCE(NULLIF(locationID, 0), location2ID)

或者,

WHERE (
(locationID <> 0 AND myVar = locationID)
OR
(locationID = 0 AND myVar = location2ID)
)

关于SQL DB2 - WHERE 子句中的条件逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638042/

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