我正在使用DB2 v9DB2條件WHERE子句
我有一個帶有參數的存儲過程,可能會以空字符串的形式傳入。這裏somer僞代碼爲我想要做的:
WHERE myColumn.name =
IF param1 = '' THEN
**disregard this param, all column values are eligible**
ELSE
myColumn.name = param1;
基本上只是忽略參數,如果它是一個空字符串。如果不是,則將其作爲WHERE子句中的過濾器應用。這在DB2中可以做到嗎?
你的智慧超出了我最瘋狂的夢想。謝謝! – Ted 2012-04-18 17:45:36
這個想法是,通常*查詢生成器/優化器足夠智能以檢測「循環不變」條件。 (就像'WHERE 1 = 0 OR ...') – wildplasser 2012-04-18 17:54:24
@Ted - 請注意,雖然我做了類似的事情,但SQL並不能像大多數編程語言那樣確保「短路」順序。 wildplasser的評論(通常)是實際發生的事情,這可能會使它出現這種行爲。 – 2012-04-19 16:28:47