Можно ли хранить '' (пустую строку) как ненулевое значение в базе данных? - PullRequest
15 голосов
/ 02 февраля 2010

Я использую БД Oracle. На уровне базы данных, когда вы устанавливаете значение столбца в 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

Можно ли сохранить last_name как ненулевую пустую строку ('')?

Ответы [ 4 ]

8 голосов
/ 02 февраля 2010

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

4 голосов
/ 03 февраля 2010

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

4 голосов
/ 02 февраля 2010

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

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

1 голос
/ 02 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...