注册

casewhen筛选的字段非空判断错误问题

中年油腻大叔 2025/05/09 286 6

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM Database Server 64 V8
【操作系统】:kylin v10
【CPU】:x86
【问题描述】*:达梦数据库判断字段是否为null时,明明字段非空确查不出数据来
以下是简化的sql:
1.不执行where条件能够查出RULE_NAME的值
image.png
2.加上"RULE_NAME IS NOT NULL"条件后查询结果为空:
image.png
3.如果少关联一个表,执行where条件又能查出数据来
image.png

项目使用dm8_20210927_x86_rh6_64_ent_8.1.2.70_pack2.iso安装,数据库版本为:
image.png

从官网上下载最新版,就不存在这个问题,但是项目需要兼容旧版,请大佬帮忙分析下原因。
问题sql:
select * from (select
CASE
WHEN a1.id = 1 THEN a2.RULE_NAME
WHEN a1.id = 2 THEN a3.ALARM_NAME
ELSE a4.ALARM_NAME END RULE_NAME
from (select 2 as id from dual) a1
left join T_ALARM_NOTICE_CONFIG a2 on a1.id =a2.id
left join T_SYS_RESOURCE_ALARM_RULE a3 on a1.id =a3.id
left join T_CHECK_ACCOUNTS_ALARM_RULE a4 on a1.id =a4.id ) AA WHERE AA.RULE_NAME IS NOT NULL;

回答 0
暂无回答
扫一扫
联系客服