EdgeLib выглядит многообещающим и имеет бета iPhone, о которой объявляют, но не открытый все же.
NULL имеют особое поведение: сравнение чего-либо с NULL возвращает вам NULL
, что является чем-то другим, кроме false
или ] 0
. Это означает "
null и "" - не одно и то же, поэтому здесь нет противоречия.
Семантическое значение null / "" зависит от человека и часто является "религиозным" вопросом. Для некоторых людей в некоторых схемах они, конечно, могут быть одинаковыми, но это не обязательно. Например, «» может означать «Я явно просил пользователя ввести данные, а они предпочли ничего не вводить», в то время как ноль может означать «Я даже не просил ввода».
Существует разница между нулевым значением и пустой строкой - по крайней мере, в SQL.
SELECT LENGTH('tata');
4
SELECT LENGTH(NULL);
NULL
SELECT LENGTH('tata')-LENGTH('');
4
SELECT LENGTH('tata')-LENGTH(NULL);
NULL
Большинство языков программирования, которые взаимодействуют с базой данных, изначально не поддерживают NULL, которая работает так же, как в базе данных. Например, в C # null <> DbNull.Value. В VB большинство типов данных не могут справиться с семантикой null, например, вы не можете сохранить null в Date или Int и т. Д. Чем меньше количество нулей, которые видят клиентские программы, тем меньше будет головной боли. В случае VB закрывающая вещь, означающая null для строк, имеет значение Empty, что ближе к неинициализированному, а не совсем то же значение, что и NULL в смысле «неизвестно»
Потому что иногда на некоторых языках запрос «select» дает вам строку NULL , и вам нужно будет проверить, настоящая ли это строка с содержимое "NULL" или действительно пустое.
С "" это проще всего (IMHO)
Мы не разрешаем нули, потому что программный доступ к полю из таблицы данных со значением DBnull вызывает исключение, а пустая строка имеет значение и, следовательно, не вызывает ошибки.
В дополнение к тому, что упомянул @Piskvor, эта практика также существует для предотвращения некоторых потенциальных исключений NullPointerExceptions в логике приложения при заполнении bean-компонентов / объектов и т. Д. После чтения из БД