SQL查询中的动态附加约束

时间:2012-07-13 14:47:31

标签: sql oracle

我有这个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,那么我想用 devudp1.bdvalue ='10'附加我的上面的select子句,否则它应该附加 devudp1.bdvalue ='Hello'< /强>

因此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'

任何人都可以建议我如何使用这个逻辑

1 个答案:

答案 0 :(得分: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') 
        )