如何排除列中包含空值的行?

ale*_*ton 2 oracle case

这可能不是检索列中包含指定值的行的理想查询,但下面的解决方案有效地返回新列别名中指定的值,但包含 NULL 值。如何构建以下查询来排除列别名中包含 NULL 值的行?

SELECT student_id,
       salutation,
       CASE
           WHEN salutation IN('Dr.') THEN 'Doctor'
       END AS "NewSalutation"
FROM student.student
Run Code Online (Sandbox Code Playgroud)

我欢迎其他方法 - 谢谢!

Phi*_*lᵀᴹ 5

SELECT * FROM (
SELECT student_id,
       salutation,
       CASE
           WHEN salutation IN('Dr.') THEN 'Doctor'
       END AS NewSalutation
FROM student.student
) 
WHERE NewSalutation IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)

如果这是语句中的唯一部分CASE,则逻辑上等效的查询将是:

SELECT student_id,
       salutation,
       CASE
           WHEN salutation IN('Dr.') THEN 'Doctor'
       END AS NewSalutation
FROM student.student
WHERE salutation = 'Dr.';
Run Code Online (Sandbox Code Playgroud)

...除了Dr.会产生NULL NewSalutation.