База Данных MySQL NULL Значения
HTML5CSS.ru
ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
❮ Назад Дальше ❯
Что такое нулевое значение?
Поле со значением NULL является полем без значения.
Если поле в таблице является необязательным, можно вставить новую запись или обновить запись без добавления значения в это поле. Затем поле будет сохранено со значением NULL.
Примечание: Очень важно понимать, что значение NULL отличается от нулевого значения или поля, содержащего пробелы. Поле со значением NULL является одним, которое было оставлено пустым во время создания записи!
Как проверить значения NULL?
Невозможно проверить значения NULL с помощью операторов сравнения, таких как =, < или < >.
Нам придется использовать IS NULL и не NULL операторы вместо.
Синтаксис null
SELECT column_names
FROM table_name
WHERE column_name IS NULL;
Синтаксис не равен null
SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
Демонстрационная база данных
Предположим, что у нас есть следующая таблица «персоны»:
ID | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Doe | John | 542 W. 27th Street | New York |
2 | Bloggs | Joe | London | |
3 | Roe | Jane | New York | |
4 | Smith | John | 110 Bishopsgate | London |
Предположим, что столбец «адрес» в таблице «лица» является необязательным. Если запись вставлена без значения «Address», то столбец «Address» будет сохранен со значением NULL.
Оператор IS NULL
Следующая инструкция SQL использует оператор IS NULL для перечисления всех лиц, не имеющих адреса:
SELECT LastName, FirstName, Address FROM Persons
The result-set will look like this:
LastName | FirstName | Address |
---|---|---|
Bloggs | Joe | |
Roe | Jane |
Совет: Всегда используйте значение NULL для поиска значений NULL.
Оператор NOT NULL
Следующая инструкция SQL использует оператор NOT NULL для перечисления всех лиц, у которых есть адрес:
SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NOT NULL;
Результирующий набор будет выглядеть так:
LastName | FirstName | Address |
---|---|---|
Doe | John | 542 W. |
Smith | John | 110 Bishopsgate |
❮ Назад Дальше ❯
PHP\CSS\JS\HMTL Editor
Copyright 2018-2020 HTML5CSS.ru
Правила и Условия Политика конфиденциальности О нас Контакты
Сравнение с значением NULL в MySQL
Сравнение с значением NULL в MySQL
Очень часто начинающие администраторы баз данных MySQL сталкиваються с проблемой обработки значения NULL из-за своего неправильного понимания этого значения. В этой статье попробуем разобрать что за зверь это значение NULL.
Значение NULL — Особое специальное значение (псевдозначение) соответствует понятию «пустое поле» (несодержащие никаких значений, не нуля, не значения пустой строки), используется для записи в поле таблицы базы данных MySQL.
Основные грабли закапаны как раз при сравнение значения NULL с другими значениями стандартными спосабами, но давайте попорядку.
Особенности значения NULL в MySQL.
Попробуем разобраться на следующих примерах. Сравним NULL с логическим значением FALSE, с пустой строкой, с нулем, с самим сабой (т.е. cо значением NULL) и проанализируем полученные результаты.
mysql> SELECT NULL = FALSE ; +--------------+ | NULL = FALSE | +--------------+ | NULL | +--------------+ 1 row in set (0.00 sec)
Вывод: NULL не равно логическому значению FALSE.
mysql> SELECT NULL = 0 ; +----------+ | NULL = 0 | +----------+ | NULL | +----------+ 1 row in set (0.00 sec)
Вывод: NULL не равно целочисленному нулю.
mysql> SELECT NULL = '' ; +-----------+ | NULL = '' | +-----------+ | NULL | +-----------+ 1 row in set (0.00 sec)
Вывод: NULL не равно пустой строке
mysql> SELECT NULL = NULL ; +-------------+ | NULL = NULL | +-------------+ | NULL | +-------------+ 1 row in set (0. 00 sec)
Вывод: NULL не равно NULL
Видно что результат для всех запросов один — значение NULL. На первый взгляд это выглядит довольно странно, но мы знаем что пo определению значение NULL представляет как раз отсутствие какого либо значения и не принадлежит ни к одному типу данных.
Обработка значения NULL в запросе MySQL.
Рассмотрим примеры:
SELECT * FROM name_table WHERE name_column IS NULL;
Этот запрос выведит строки содержащие значение NULL.
SELECT * FROM name_table WHERE neame_column IS NOT NULL;
А этот запрос выведит все строки, кроме строк содержащих значение NULL.
Помните, что при сравнение каких либо значение c NULL, всегда будет полyчен результат NULL.
Ниже представлены неправbльные запросы, которые невыведут ни одной строки.
SELECT * FROM name_table WHERE name_column = NULL; SELECT * FROM name_table WHERE name_column != NULL;
Вот и все. Делайте правельные выборки из баз MySQL содержащих NULL.
Значения MySQL NULL — IS NULL и IS NOT NULL
❮ Предыдущий Далее ❯
Что такое значение NULL?
Поле со значением NULL является полем без значения.
Если поле в таблице является необязательным, можно вставить новую запись или обновить запись, не добавляя значение в это поле. Тогда поле будет сохраняется со значением NULL.
Примечание: Значение NULL отличается от нулевого значения или поля, которое содержит пробелы. Поле со значением NULL — это поле, оставленное пустым. при создании записи!
Как проверить значения NULL?
Невозможно проверить значения NULL с помощью операторов сравнения, таких как =, < или <>
Нам придется использовать IS NULL
и IS NOT NULL вместо
операторов.
IS NULL Синтаксис
SELECT имена_столбцов
FROM имя_таблицы
ГДЕ имя_столбца IS NULL;
IS NOT NULL Синтаксис
SELECT имена столбцов
ОТ имя_таблицы
ГДЕ имя_столбца НЕ НУЛЕВОЕ;
Демонстрационная база данных
Ниже приведена выборка из таблицы «Клиенты» в образце «Борей» база данных:
CustomerID | ИмяКлиента | Контактное имя | Адрес | Город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
1 | Альфред Футтеркисте | Мария Андерс | ул. Обере 57 | Берлин | Германия | |
2 | Ана Трухильо Emparedados y helados | Ана Трухильо | Авда. Конститусьон 2222 | Мексика Д.Ф. | 05021 | Мексика |
3 | Антонио Морено Такерия | Антонио Морено | Матадерос 2312 | Мексика Д.Ф. | 05023 | Мексика |
4 | Вокруг Рога | Томас Харди | Ганноверская площадь, 120 | Лондон | ВА1 1ДП | Великобритания |
5 | Кристина Берглунд | Бергувсвеген 8 | Лулео | S-958 22 | Швеция |
Оператор IS NULL
Оператор IS NULL
используется для проверки пустых значений (значений NULL).
Следующий SQL перечисляет всех клиентов со значением NULL в поле «Адрес»:
Пример
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address
НУЛЕВОЙ;
Попробуйте сами »
Совет: Всегда используйте IS NULL для поиска значений NULL.
Оператор IS NOT NULL
Оператор IS NOT NULL
используется для проверки непустых значений (NOT NULL
ценности).
Следующий SQL перечисляет всех клиентов со значением в поле «Адрес»:
Пример
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address
НЕ НУЛЬ;
Попробуйте сами »
Проверьте себя с помощью упражнений
Упражнение:
Выберите все записи из Customers
, где Столбец PostalCode
пуст.
ВЫБЕРИТЕ * ИЗ клиентов ГДЕ ;
Запустить Упражнение
❮ Предыдущий Следующий ❯
НАБОР ЦВЕТА
Лучшие учебники
Учебник по HTMLУчебник по CSS
Учебник по JavaScript
Учебник How To
Учебник по SQL
Учебник по Python
Учебник по W3. CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery
Лучшие ссылки
HTML ReferenceCSS Reference
JavaScript Reference
SQL Reference
Python Reference
W3.CSS Reference
Bootstrap Reference
PHP Reference
HTML Colors
Java Reference
Angular Reference
jQuery Reference
Top1s Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery
FORUM | О
W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.
Авторское право 1999-2023 по данным Refsnes. Все права защищены.
W3Schools работает на основе W3.CSS.
MySQL: выбор строк, в которых столбец имеет значение null
спросил
Изменено 4 года, 9 месяцев назад
Просмотрено 470 тысяч раз
У меня проблема: когда я пытаюсь выбрать строки, содержащие NULL для определенного столбца, возвращается пустой набор. Однако, когда я смотрю на таблицу в phpMyAdmin, для большинства строк отображается нуль.
Мой запрос выглядит примерно так:
ВЫБЕРИТЕ pid ИЗ планет, ГДЕ userid = NULL
Каждый раз пустой набор.
Во многих местах сказано, чтобы убедиться, что оно не хранится как «NULL» или «null» вместо фактического значения, и в одном было сказано попробовать найти только пробел ( userid = ' '
), но ни один из них не имеет работал. Было предложено не использовать MyISAM и использовать innoDB, потому что у MyISAM возникают проблемы с сохранением null. Я переключил таблицу на innoDB, но теперь я чувствую, что проблема может заключаться в том, что она все еще не равна нулю из-за того, как она может ее преобразовать. Я хотел бы сделать это без необходимости воссоздавать таблицу как innoDB или что-то еще, но если мне нужно, я, безусловно, могу это попробовать.
- mysql
- ноль
1
SQL NULL особенный, и вы должны сделать WHERE field IS NULL
, так как NULL не может быть равен чему-либо,
включая самого себя (т.е. NULL = NULL всегда ложно).
См. Правило 3
https://en. wikipedia.org/wiki/Codd%27s_12_rules
4
ВЫБЕРИТЕ pid ИЗ планет, ГДЕ идентификатор пользователя НЕ НУЛЕН
Так как все ответы даны хочу еще немного добавить. Я также столкнулся с той же проблемой.
Почему ваш запрос не удался? У вас есть,
ВЫБЕРИТЕ pid FROM планеты, ГДЕ userid = NULL;
Это не даст ожидаемого результата, потому что из mysql doc
В SQL, значение NULL никогда не является истинным по сравнению с любым другим значением, даже NULL. Выражение, содержащее NULL, всегда дает значение NULL, если иное не указано в документации для операторов и функций, задействованных в выражении.
Упорная мина.
Для поиска значений столбца
NULL
нельзя использовать тестexpr = NULL
. Следующий оператор не возвращает строк, потому чтоexpr = NULL
никогда не бывает истинным ни для одного выражения
ВЫБЕРИТЕ pid ИЗ планет, ГДЕ userid IS NULL;
Для проверки NULL
используйте операторы IS NULL
и IS NOT NULL
.
- оператор IS NULL проверяет, равно ли значение
НОЛЬ
. Оператор - IS NOT NULL проверяет, не является ли значение
NULL
. - Операторы сравнения MySQL
Также есть оператор <=>
:
SELECT pid FROM planets WHERE userid <=> NULL
Подойдет. Приятно то, что <=>
также можно использовать со значениями, отличными от NULL:
SELECT NULL <=> NULL
дает 1
.
ВЫБОР 42 <=> 42
также дает 1
.
См. здесь: https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_equal-to
0
Информация с http://w3schools.com/sql/sql_null_values.asp:
1) Значения NULL представляют отсутствующие неизвестные данные.
2) По умолчанию столбец таблицы может содержать значения NULL.
3) Значения NULL обрабатываются иначе, чем другие значения
4) Невозможно сравнить NULL и 0; они не эквивалентны.
5) Невозможно проверить значения NULL при сравнении операторы, такие как =, < или <>.
6) Вместо этого нам придется использовать операторы IS NULL и IS NOT NULL
Итак, в случае вашей проблемы:
ВЫБЕРИТЕ pid ИЗ планет, ГДЕ userid IS NULL
0
Была такая же проблема, когда запрос:
SELECT * FROM 'column' WHERE 'column' IS NULL;
не вернул никаких значений. Кажется, это проблема с MyISAM, и тот же запрос к данным в InnoDB вернул ожидаемые результаты.
Пошел с:
SELECT * FROM 'column' WHERE 'column' = ' ';
Возврат всех ожидаемых результатов.
ВЫБЕРИТЕ pid ИЗ планет, ГДЕ идентификатор пользователя равен нулю;
У меня была такая же проблема при преобразовании баз данных из Access в MySQL (с использованием vb.net для связи с базой данных).
Мне нужно было проверить, является ли поле (тип поля varchar(1)) нулевым.