Спрятать колонку

Одним из небольших подводных камней в Oracle может является Null и операции с ним.
Для работы с ним нужно четко уяснить два правила:
1. Null <> Null всегда и везде
2. Помнить о преобразовании типов.

Рассмотрим далее пример.

Создадим таблицу:

CREATE TABLE test_null(
  v_is_null varchar2(10)
);

прогоним скрипт:

INSERT INTO test_null(v_is_null) VALUES(NULL);
INSERT INTO test_null(v_is_null) VALUES('  ');
INSERT INTO test_null(v_is_null) VALUES('');

сколько строк вернут следующие запросы?
1.

SELECT  * FROM test_null
WHERE v_is_null = NULL

2.

SELECT  * FROM test_null
WHERE v_is_null = ''

3.

SELECT  * FROM test_null
WHERE v_is_null = '  '

Правильные ответы:
1. ноль строк. Потому что Null <> Null
2. ноль строк. Потому что '' (пустая строка) всегда трактуется как Null, далее смотрите пункт 1)
3. одна строка.

Помните о преобразованиях типов.

Наверх