您的位置:首页 > 数据库

SQL/PLSQL:在where条件中写case when和decode

2017-03-14 14:21 337 查看
业务场景:
传参为发票口岸,即'&口岸'

若 传参 = '其他'   , 则 查表fp.ka字段不等于上海or广州or大连
若 传参 <> '其他' , 则 查表fp.ka等于传入值的所有行
若 传参为空  , 则 查表的所有行

代码示例:

SELECT fp.ka,fp.*
FROM BJRC_CKFP FP
WHERE 1 = 1
AND fp.ka = ( CASE WHEN '&口岸' IS NOT NULL THEN '&口岸' END)
OR  fp.ka = DECODE('&口岸',NULL,ka)
OR (fp.ka <> DECODE('&口岸','其他','上海')
AND fp.ka <> DECODE('&口岸','其他','广州')
AND fp.ka <> DECODE('&口岸','其他','大连')
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: