Ответ 1
Единственный способ сделать это в oracle - это какое-то вспомогательное поле флага, которое, когда set должно представлять факт, что значение должно быть пустой строкой.
Я использую 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 ('')?
Единственный способ сделать это в oracle - это какое-то вспомогательное поле флага, которое, когда set должно представлять факт, что значение должно быть пустой строкой.
Насколько я знаю, Oracle не различает '' и NULL, см. здесь.
Oracle имеет хорошо знакомое поведение, которое беззвучно преобразует ""
в NULL
в операторы INSERT и UPDATE.
Вам нужно иметь дело с этим в своем коде, чтобы предотвратить это поведение, преобразовывая NULL
в ""
, когда вы читаете столбцы и не используете NULL
в своей программе для начала.
Долгое время, когда я использовал Oracle, но я полагал, что мы использовали единое пространство '' для представления пустой строки, а затем обрезали ее после прочтения.