2012-07-13 64 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') 
     )