达梦数据库-查询语句的where下case语句不支持整个条件分支判断的问题
目录
达梦数据库 查询语句的where下case语句不支持整个条件分支判断的问题
问题
这是一张区域表,依据业务要求:根据某些条件,来判断使用条件。举例:
错误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')
刚涉及到达梦数据库,不是很了解,如有更好的方案,还请赐教。