Можно ли хранить '' (пустую строку) как значение NULL в базе данных?

Я использую Oracle DB. На уровне базы данных, когда вы устанавливаете значение столбца как NULL, так и '' (пустая строка), выведенное значение равно NULL в обоих случаях. Можно ли хранить '' (пустую строку) как значение NULL в базе данных?

Я выполняю это

UPDATE contacts SET last_name = '' WHERE id = '1001';

commit;

SELECT last_name, ID FROM contacts WHERE id ='1001';

LAST_NAME                  ID
------------               ------
null                       1001

Можно ли сохранить последнее имя как пустую строку, отличную от NULL ('')?

Ответы

Ответ 1

Единственный способ сделать это в oracle - это какое-то вспомогательное поле флага, которое, когда set должно представлять факт, что значение должно быть пустой строкой.

Ответ 2

Насколько я знаю, Oracle не различает '' и NULL, см. здесь.

Ответ 3

Oracle имеет хорошо знакомое поведение, которое беззвучно преобразует "" в NULL в операторы INSERT и UPDATE.

Вам нужно иметь дело с этим в своем коде, чтобы предотвратить это поведение, преобразовывая NULL в "", когда вы читаете столбцы и не используете NULL в своей программе для начала.

Ответ 4

Долгое время, когда я использовал Oracle, но я полагал, что мы использовали единое пространство '' для представления пустой строки, а затем обрезали ее после прочтения.