问题
这是一张区域表,依据业务要求:根据某些条件,来判断使用条件。举例:
错误SQL语句:
SELECT *
FROM s_sg_area s
WHERE
case
when true
then s.area_code = '440111015004'
else s.area_type = '03'
end
报错信息:
[执行语句1]:
SELECT *
FROM s_sg_area s
WHERE
case
when true
then s.area_code = '440111015004'
else s.area_type = '03'
end
执行失败(语句1)
第 6 行, 第 19 列[=]附近出现错误:
语法分析出错
1条语句执行失败
折中解决方案
利用判断条件的逻辑或的特性(当第一个条件为true时,不执行第二个条件)。示例如下:
select s.*
from s_sg_area s
where 1=1
-- xxx 不为空 执行
and ((? is null ) or s.AREA_CODE = '440111015004' )
-- xxx 为空 执行
and ((? is not null ) or s.AREA_TYPE = '03')
刚涉及到达梦数据库,不是很了解,如有更好的方案,还请赐教。