select  name 
from student 
where age = 
(case when sex is not null then '15' end)
当sex=null时,结果是什么样的

解决方案 »

  1.   

    (case when sex is not null then '15' end)
    等价于
    (case when sex is not null then '15' else null end)
      

  2.   

    nvl2(sex, '15', null)
      

  3.   

    当sex=null时,什么都查询不到。
    原理很简单,当sex=null时,就是
    select case when null is not null then '15' end from dual ;
    返回结果是null
    select  name 
     from student 
     where age = null
    这个语句什么都查询不到。
      

  4.   

    SELECT name FROM student
    WHERE age=(CASE WHEN sex is not null THEN '15' ELSE null END)