База Данных 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;


Демонстрационная база данных

Предположим, что у нас есть следующая таблица «персоны»:

IDLastNameFirstNameAddressCity
1DoeJohn542 W. 27th StreetNew York
2BloggsJoe London
3RoeJane New York
4SmithJohn110 BishopsgateLondon

Предположим, что столбец «адрес» в таблице «лица» является необязательным. Если запись вставлена без значения «Address», то столбец «Address» будет сохранен со значением NULL.



Оператор IS NULL

Следующая инструкция SQL использует оператор IS NULL для перечисления всех лиц, не имеющих адреса:

SELECT LastName, FirstName, Address FROM Persons

WHERE Address IS NULL;

The result-set will look like this:

LastNameFirstNameAddress
BloggsJoe 
RoeJane 

Совет: Всегда используйте значение NULL для поиска значений NULL.


Оператор NOT NULL

Следующая инструкция SQL использует оператор NOT NULL для перечисления всех лиц, у которых есть адрес:

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NOT NULL;

Результирующий набор будет выглядеть так:

LastNameFirstNameAddress
DoeJohn542 W.
27th Street
SmithJohn110 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.

Как же обрабатывать значение NULL? В базах данных MySQL существуют специальные операторы IS NULL и IS NOT NULL для правильного сравнения значений с NULL.

Рассмотрим примеры:

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 Берлин
12209
Германия
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 Reference
CSS 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 оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.

Используя 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)) нулевым.