前言:今天写功能的时候遇到一个问题,SQL中字段跟子查询结果判等,子查询结果为null,查询不到数据
平时我们写字段跟null比较都会写is null 和is not null
比如
select * from table where name is not null
但是遇到跟子查询比较,子查询结果可能为null怎么办
我这里提供一种解决办法,就是使用case分支语句判断一下
比如我这里查询跟id为7的记录在同一级目录下所有记录的ID和sort值
select regionid id, sort from SYS_REGION where case when (select PARENTREGIONID from SYS_REGION where regionid = '7') is null then PARENTREGIONID is null else PARENTREGIONID = (select PARENTREGIONID from SYS_REGION where regionid = '7') end
如果是null就写is null
如果不是null就写等于
ps:我这里用的是人大金仓数据库,语法跟其他库大同小异
如果还有其他更好的处理方法,欢迎讨论