web-dev-qa-db-ja.com

列内にnull値を含む行を除外する方法は?

これは、列内の指定された値を含む行を取得する理想的なクエリではない可能性がありますが、以下の解決策は、新しい列エイリアスで指定された値を効果的に返しますが、NULL値を含みます。以下のクエリは、列のエイリアス内にNULL値を含む行を除外するためにどのように構築されますか?

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

私は代替アプローチを歓迎します-ありがとう!

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

それがCASEステートメントの唯一のセクションである場合、論理的に同等のクエリは次のようになります。

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

... Dr.以外はNULLNewSalutationを生成するため。

3
Philᵀᴹ