Такой вопрос возник, а зачем NULL вобще нужен??? ведь если я захочу не заполнять яейку из таблии я могу просто оставить её пустой
qaz333
Как ты int пустым сделаешь? Там будет 0, а это вполне уже конкретное значение.
Цитата (Rand @ 4.11.2013 - 11:57) |
qaz333 Как ты int пустым сделаешь? Там будет 0, а это вполне уже конкретное значение. |
нау причём тут инт? ну сделаю с нулём)) нулл туда тоже не лезет и чё? больше применения етой ерунде нету?
DedMorozzz
4.11.2013 - 16:04
А как насчёт выборки? К примеру пустых комментов. Будешь сравнивать с "" ?
Или как ты пробелы/переносы строк будешь отличать от пустых значений(как минимум визуально), такое же может быть. Верно?
И вместо НУЛЛ писать 0, для инта - это кастыль и не полный. К примеру:
0 == 0 - это тру, а NULL == NULL - это фолс. И NULL != NULL - это тоже фолс.
НУЛЛ ничему не равен, это "неопределёность"
Даже если не рассматривать вопрос быстродействия. Проверка на наличие значения быстрее, чем проверка на конкретное значение
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Цитата (DedMorozzz @ 4.11.2013 - 12:04) |
А как насчёт выборки? К примеру пустых комментов. Будешь сравнивать с "" ? Или как ты пробелы/переносы строк будешь отличать от пустых значений(как минимум визуально), такое же может быть. Верно?
И вместо НУЛЛ писать 0, для инта - это кастыль и не полный. К примеру: 0 == 0 - это тру, а NULL == NULL - это фолс |
ну во первых такого быть неможет, а во вторых такой запрос без проблем работает
SELECT *
FROM `result`
WHERE `domain` = " "
DedMorozzz
4.11.2013 - 16:11
Чего именно быть не может?
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Цитата (DedMorozzz @ 4.11.2013 - 12:11) |
Чего именно быть не может? |
что в ячейку только пробел попадёт
qaz333
Ты спорить пришел или спрашивать? Даже отвечать не хочется. Гуглить по фразам, "реляционная теория", "трехзначная логика", "12 правил Кодда".
Цитата (DedMorozzz @ 4.11.2013 - 12:04) |
А как насчёт выборки? К примеру пустых комментов. Будешь сравнивать с "" ? |
да, сравню с "" чем это плохо?
DedMorozzz
4.11.2013 - 16:19
qaz333, ну это в твоей, конкретной структуре, а в другом сайте может
И вот тебе другой пример, а не абстрактная ситуация:
Имеем таблицу квартир, в свеже построенном доме, по гос программе.
И там 1 квартира может быть выданна только 1му юзеру.
И на поле "юзер_ид" ставится уникальность
Если юзер не указан - квартиру ещё не раздали
Итого если айди юзера будет 0, то это значение и по нему уникальность будет проходить, что уже не верно работает, а при нулл - уникальность не пройдёт
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
DedMorozzz
4.11.2013 - 16:22
Цитата (qaz333 @ 4.11.2013 - 15:18) |
да, сравню с "" чем это плохо? |
Плохо тем, что ты смешиваешь типы данных это 1.
2е - как уже сказал скорость.
А 3е - выше написал, что такая ситуация - когда "можно" заменить нулл на 0, это не более чем частный случай и не всегда подходит
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Цитата (DedMorozzz @ 4.11.2013 - 12:22) |
Цитата (qaz333 @ 4.11.2013 - 15:18) | да, сравню с "" чем это плохо? |
Плохо тем, что ты смешиваешь типы данных это 1. 2е - как уже сказал скорость. А 3е - выше написал, что такая ситуация - когда "можно" заменить нулл на 0, это не более чем частный случай и не всегда подходит
|
ммм, серовно чёо не понятно, ну начнём с первого, а почему смешивание типов данных это плохо? работает же ведь, ну то что сколость - то ладно, плюс имеем)) насчёт случая как-то неочень понятно, несколько раз перечитал, - не дошло

а можно приммер в виде кода? я не пойму зачем в int воще пихать NULL и как его туда впихнуть, я только что попытался впихнуть в int пустую строку, он заругался и поставил 0
DedMorozzz
4.11.2013 - 16:35
Цитата (qaz333 @ 4.11.2013 - 15:33) |
я не пойму зачем в int воще пихать NULL и как его туда впихнуть, я только что попытался впихнуть в int пустую строку, он заругался и поставил 0
|
Именно в этом и проблема. Нулл это не значение, а отсутствие значений. К примеру в ПМА имеется рядом с полем чекбокс, нул ли это. Вот ту галочку и надо ставить, если хочешь сделать поле нулом
А в чём проблема смешивания данных - это только усложняет логику и может её вообще нарушить
Пример
$a = 1;
$b = '1';
$a == $b - true
$a === $b - false
Так или иначе, смешаные типы данных не делают логику более прозрачной. И заменна нулл на 0, это частные, не всегда подходящие случае.
И как следствие возникает вопрос - зачем использовать заведомо не подходящий формат данных, который может в дальнейшем вызвать доп. проблем?
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Цитата (qaz333 @ 4.11.2013 - 16:33) |
я не пойму зачем в int воще пихать NULL и как его туда впихнуть, я только что попытался впихнуть в int пустую строку, он заругался и поставил 0 |
Отличная логика - не знаю и не умею как пользоваться null, напишу на форуме что он не нужен.
Цитата (DedMorozzz @ 4.11.2013 - 12:22) |
Плохо тем, что ты смешиваешь типы данных это 1. |
а какие я типы смешиваю?
я вот непойму, сделал одну ячейку в таблице пустую, во вторую написал NULL
делаю запрос
SELECT *
FROM `result`
WHERE `domain` IS NULL
результат нулевой, что не так?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.