2012-07-13 42 views
1

我有這樣的SQL動態追加限制

SELECT devudp1.deviceoid,devudp1.valueType 
    FROM DeviceUdpValues devUDP1 
WHERE devudp1.udpname='TestUDP' 
    and <<either bdvalue or string value based on user selected value datatype>> 

在這裏,在查詢基礎上,devudp1.valueType我要追加屬性如下

如果VALUETYPE是3,那麼我想追加我上面的SELECT子句與devudp1.bdvalue = '10',否則應由devudp1.bdvalue附加= '你好'

所以上面的查詢時VALUETYPE是3看起來像

SELECT devudp1.deviceoid,devudp1.valueType 
    FROM DeviceUdpValues devUDP1 
WHERE devudp1.udpname='TestUDP' 
    AND devudp1.bdvalue = '10' 

否則它會像

SELECT devudp1.deviceoid,devudp1.valueType 
    FROM DeviceUdpValues devUDP1 
WHERE devudp1.udpname='TestUDP' 
    AND devudp1.stringValue = 'Hello' 

任何人都可以建議我如何把這個邏輯到位

+0

這種事情是一個壞主意。這可能會使開發人員的生活更輕鬆,但它往往會以糟糕的表現來懲罰用戶, – APC 2012-07-13 20:42:04

回答

3

試試這個:

SELECT devudp1.deviceoid,devudp1.valueType 
    FROM DeviceUdpValues devUDP1 
WHERE devudp1.udpname='TestUDP' 
    AND (
     (<USER-SELECTED-VALUE> = 3 AND devudp1.bdvalue ='10') OR 
     (<USER-SELECTED-VALUE> <> 3 AND devudp1.stringvalue ='Hello') 
     )