[英]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.