Объясните, плиз, практическое применение колонок, позволяющих хранение NULL-значений. Какая разница, например, в хранении значения NULL вместо значения 0 для полей типа DATETIME, кроме того, что как таковой даты 0 не существует?
Алексей,
начальник отдела ПТО
ООО "ОРК"
mail: alex@jrcn.donetsk.ua, icq: 62605472
www: http://www.nikasoft.co.uk
http://www.clarionline.h1.ru (FAQ-онлайн)
origin: Симпатичный партизан сдаст "своих" врагу на короткий срок.
(Добавление)
Ну, применений много.
Раз задал такой вопрос значит они тебе пока не нужны
Различие понятий "нулевое значение" и "отсутствие значения" иногда существенно.
--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836
Уже нужны, раз дату 00.00.0000 я не могу "засунуть" в БД...
Например? Случай с датами отбрасываем.Различие понятий "нулевое значение" и "отсутствие значения" иногда существенно.
Алексей
Если есть правила в БД (CONSTRAINT), я уже писал, 0 это не пустая ссылка (ошибка), null - отсутсвие ссылки (нет ошибки)
Andrew Myalin
andrew@arsis.ru
http://mavcla.arsis.ru (MAV Direct ODBC)
IRC: IRC.RINET.RU:6669, Channel #Clarion, AndrewM
ICQ: 10659412
Yahoo group: clarion@yahoogroups.com
"Температура в камере" = 0 и "Температура в камере" неизвестна (is NULL)
WBR, Nick Tsigouro mailto:nick@arsis.ru
Во, вспомнил.
Случай с датами, но суть, надеюсь, проясняет.
Код: Выделить всё
Create Table SomeProcess(
id integer not null,
StartTime timestamp Not Null default current_timestamp,
FinishTime timestamp,
... другие поля ...
);
Хранение 0 там, где нужно отсутствие значения - это же не от хорошей жизни, а из-за отсутствия такой возсожности в большинстве языков.
--
Best regards,
Maxim Yemelyanov
(Добавление)
А почему не можешь?Уже нужны, раз дату 00.00.0000 я не могу "засунуть" в БД...
'00.00.0000' и NULL - вещи, мягко говоря, несколько РАЗНЫЕ...
P.S. У меня _такие_ даты почему-то в поля с признаком 'NOT NULL'
"засовываются"...
Причём настолько хорошо , что _недопустимое_ в моём случае значение
'00.00.0000' приходится отлавливать программно, на этапе ввода данных.
P.P.S. А, к слову, о какой базе идёт речь?
Народ (да и я), похоже, SQL имеет в виду.
Может, у тебя что-то, что под NULL подразумевает и '00.00.0000'
--
С уважением,
Степанец Александр Валентинович.
странно, а со сторны БД поле DATETIME или INTEGER (клашин формат) ?
Andrew Myalin
1. Сам ответил, что нулевую дату ты никак не засунешь в БД, ошибка будет, если поле NOT NULL
2. Есди есть Constraint'ы между таблицами, 0 в качестве неопределённой ссылки не прокатит, а NULL прокатит
ЗЫ
а вообще при работе с NULL полями надо быть очень осторожным, очень много тонкостей при организации WHERE, EXISTS, SELECT IN по таким полям:
и если есть индекс по этому полю, а в WHERE есть:
WHERE NullField is null или WHERE NullField is not null, индес не используется, сканируется вся TABLE
Andrew Myalin
можно конечно обойти скажем "нарисовав" в справочниках запись с id=0, а лишь затем включить IDENTITY. но это не совсем красиво, да и к тому же есть варианты, когда это совсем невозможно. можно, как вариант, побалаваться тригерами на insert/update в дочерних таблицах. но как бы самый простой вариант - возможность значению принимать NULL. хотя как-то читал рекомендации стараться избегать при проектировании задавать поля с возможностью принимать значения NULL2. Есди есть Constraint'ы между таблицами, 0 в качестве неопределённой ссылки не прокатит, а NULL прокатит
как писал как-то до этого неординарно ведет себя кларин set на составных ключах включающих поля с NULL. хотя это не кларина проблема, а скорее M$ (на других платформах лень тестить)и если есть индекс по этому полю, а в WHERE есть:
WHERE NullField is null или WHERE NullField is not null, индес не используется, сканируется вся TABLE
--
Всего наилучшего, porutchik mailto:porutchik@mail.primorye.ru
http://personal.primorye.ru/porutchik/
---------------------------------------------------------
Советские боевые слоны - самые боевые слоны в мире!
А если использовать в WHERE конструкцию ISNULL(NullField,'')='', то индекс играет рояль или поиск идет всё равно по всей таблице?
С уважением, Михаил
по моему всё равно
Andrew Myalin
Написал: ClaList(2)