[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: NULL - зачем?
Страницы: 1, 2, 3
qaz333
Такой вопрос возник, а зачем NULL вобще нужен??? ведь если я захочу не заполнять яейку из таблии я могу просто оставить её пустой
Rand
qaz333
Как ты int пустым сделаешь? Там будет 0, а это вполне уже конкретное значение.
qaz333
Цитата (Rand @ 4.11.2013 - 11:57)
qaz333
Как ты int пустым сделаешь? Там будет 0, а это вполне уже конкретное значение.

нау причём тут инт? ну сделаю с нулём)) нулл туда тоже не лезет и чё? больше применения етой ерунде нету?
DedMorozzz
А как насчёт выборки? К примеру пустых комментов. Будешь сравнивать с "" ?
Или как ты пробелы/переносы строк будешь отличать от пустых значений(как минимум визуально), такое же может быть. Верно?

И вместо НУЛЛ писать 0, для инта - это кастыль и не полный. К примеру:
0 == 0 - это тру, а NULL == NULL - это фолс. И NULL != NULL - это тоже фолс.
НУЛЛ ничему не равен, это "неопределёность"

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

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
qaz333
Цитата (DedMorozzz @ 4.11.2013 - 12:04)
А как насчёт выборки? К примеру пустых комментов. Будешь сравнивать с "" ?
Или как ты пробелы/переносы строк будешь отличать от пустых значений(как минимум визуально), такое же может быть. Верно?

И вместо НУЛЛ писать 0, для инта - это кастыль и не полный. К примеру:
0 == 0 - это тру, а NULL == NULL - это фолс

ну во первых такого быть неможет, а во вторых такой запрос без проблем работает

SELECT * 
FROM `result`
WHERE `domain` = " "
DedMorozzz
Чего именно быть не может?

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
qaz333
Цитата (DedMorozzz @ 4.11.2013 - 12:11)
Чего именно быть не может?

что в ячейку только пробел попадёт
Rand
qaz333
Ты спорить пришел или спрашивать? Даже отвечать не хочется. Гуглить по фразам, "реляционная теория", "трехзначная логика", "12 правил Кодда".
qaz333
Цитата (DedMorozzz @ 4.11.2013 - 12:04)
А как насчёт выборки? К примеру пустых комментов. Будешь сравнивать с "" ?

да, сравню с "" чем это плохо?
DedMorozzz
qaz333, ну это в твоей, конкретной структуре, а в другом сайте может

И вот тебе другой пример, а не абстрактная ситуация:
Имеем таблицу квартир, в свеже построенном доме, по гос программе.
И там 1 квартира может быть выданна только 1му юзеру.
И на поле "юзер_ид" ставится уникальность
Если юзер не указан - квартиру ещё не раздали

Итого если айди юзера будет 0, то это значение и по нему уникальность будет проходить, что уже не верно работает, а при нулл - уникальность не пройдёт

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
DedMorozzz
Цитата (qaz333 @ 4.11.2013 - 15:18)
да, сравню с "" чем это плохо?

Плохо тем, что ты смешиваешь типы данных это 1.
2е - как уже сказал скорость.
А 3е - выше написал, что такая ситуация - когда "можно" заменить нулл на 0, это не более чем частный случай и не всегда подходит

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
qaz333
Цитата (DedMorozzz @ 4.11.2013 - 12:22)
Цитата (qaz333 @ 4.11.2013 - 15:18)
да, сравню с "" чем это плохо?

Плохо тем, что ты смешиваешь типы данных это 1.
2е - как уже сказал скорость.
А 3е - выше написал, что такая ситуация - когда "можно" заменить нулл на 0, это не более чем частный случай и не всегда подходит

ммм, серовно чёо не понятно, ну начнём с первого, а почему смешивание типов данных это плохо? работает же ведь, ну то что сколость - то ладно, плюс имеем)) насчёт случая как-то неочень понятно, несколько раз перечитал, - не дошло sad.gif а можно приммер в виде кода? я не пойму зачем в int воще пихать NULL и как его туда впихнуть, я только что попытался впихнуть в int пустую строку, он заругался и поставил 0
DedMorozzz
Цитата (qaz333 @ 4.11.2013 - 15:33)
я не пойму зачем в int воще пихать NULL и как его туда впихнуть, я только что попытался впихнуть в int пустую строку, он заругался и поставил 0

Именно в этом и проблема. Нулл это не значение, а отсутствие значений. К примеру в ПМА имеется рядом с полем чекбокс, нул ли это. Вот ту галочку и надо ставить, если хочешь сделать поле нулом

А в чём проблема смешивания данных - это только усложняет логику и может её вообще нарушить
Пример
$a = 1;
$b = '1';

$a == $b - true
$a === $b - false

Так или иначе, смешаные типы данных не делают логику более прозрачной. И заменна нулл на 0, это частные, не всегда подходящие случае.
И как следствие возникает вопрос - зачем использовать заведомо не подходящий формат данных, который может в дальнейшем вызвать доп. проблем?

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Guest
Цитата (qaz333 @ 4.11.2013 - 16:33)
я не пойму зачем в int воще пихать NULL и как его туда впихнуть, я только что попытался впихнуть в int пустую строку, он заругался и поставил 0

Отличная логика - не знаю и не умею как пользоваться null, напишу на форуме что он не нужен.
qaz333
Цитата (DedMorozzz @ 4.11.2013 - 12:22)
Плохо тем, что ты смешиваешь типы данных это 1.

а какие я типы смешиваю?

я вот непойму, сделал одну ячейку в таблице пустую, во вторую написал NULL

делаю запрос


SELECT *
FROM `result`
WHERE `domain` IS NULL


результат нулевой, что не так?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.