Sql where子句中的Case语句
在where子句中,我有两个选项1)状态='N'和类型='1'和2)状态='Y'和类型='1',基于参数,我需要执行一个选项:Sql where子句中的Case语句,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,在where子句中,我有两个选项1)状态='N'和类型='1'和2)状态='Y'和类型='1',基于参数,我需要执行一个选项: where case when (carName = :P_PARAMETER) then status = 'N' and type = '1' else status = 'Y' and type = '1' end 执行get error后,是否有解决此问题的解决方案或其他方法?您需要重写逻辑: wh
where
case
when (carName = :P_PARAMETER) then status = 'N' and type = '1'
else status = 'Y' and type = '1'
end
执行get error后,是否有解决此问题的解决方案或其他方法?您需要重写逻辑:
where type = '1'
AND ((status = 'N' AND carName = :P_PARAMETER))
OR status = 'Y')
您需要重写逻辑:
where type = '1'
AND ((status = 'N' AND carName = :P_PARAMETER))
OR status = 'Y')
选项
type='1'
在这两种情况下都很常见,因此您可以将其排除在CASE语句之外(还因为尝试从CASE语句返回2个值在语法上是错误的):
选项
type='1'
在这两种情况下都很常见,因此您可以将其排除在CASE语句之外(还因为尝试从CASE语句返回2个值在语法上是错误的):
您可以使用decode()
函数:
where type = '1' -- common for all cases
and status= decode(carName,:P_PARAMETER,'N','Y')
您可以使用解码()
功能:
where type = '1' -- common for all cases
and status= decode(carName,:P_PARAMETER,'N','Y')
您会遇到什么错误?您会遇到什么错误?