簡體   English   中英

SQL DB2-WHERE子句中的條件邏輯

[英]SQL DB2 - conditional logic in WHERE clause

我需要根據位置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

也失敗

謝謝

很抱歉讓小伙子們困惑-並不是說要“模棱兩可”-看起來#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)
      ) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM