SQL 指南書集 目次 - ray88’s diary
■CASE式で間違えがちなSQL文の例
以下のSQLが絶対に「×」を返さない理由
・「WHEN NULL THEN」は「WHEN col_1 = NULL」の省略系である。
・よって、NULL判定の結果は常にunknown となる
・WHEN句と同様にCASE式の評価方法も true の場合のみ有効となるため。
--col_1 が1なら「〇」をNULLなら「×」を返すCASE式? SELECT id ,col_1 ,CASE col_1 WHEN 1 THEN '〇' WHEN NULL THEN '×' END AS result FROM check_blank;
■正しいSQL文
検索CASE式を使用して以下のように記述する
--正しいSQL文 SELECT id ,col_1 ,CASE WHEN col_1 = 1 THEN '〇' WHEN col_1 IS NULL THEN '×' END AS result FROM check_blank;
テーブル作成用SQL
CREATE TABLE check_blank (id VARCHAR(16) PRIMARY KEY, col_1 INTEGER); INSERT INTO check_blank VALUES('a',1); INSERT INTO check_blank VALUES('b',NULL); INSERT INTO check_blank VALUES('c',1); INSERT INTO check_blank VALUES('d',NULL);