NULL значения в агрегатных функциях
NULL значения в агрегатных функциях обрабатываются по особому — они игнорируются. Поэкспериментируем на таблице:
SELECT * FROM table1
| value |
|---|
| 1 |
| 2 |
| 3 |
| NULL |
Получим минимальное и максимальное значение:
SELECT min(value) as min_value, max(value) as max_value FROM table1
| min_value | max_value |
|---|---|
| 1 | 3 |
Исключением является функция count(*) , возвращающая общее количество строк в выборке. count(*) не принимает на вход никакого выражения, а просто возвращает количество строк в выборке, независимо от наличия NULL значений. Чтобы посчитать количество не NULL значений в столбце, необходимо воспользоваться функцией count(выражение) . Например:
SELECT count(value) as count_value, count(*) as count_rows FROM table1
| count_value | count_rows |
|---|---|
| 3 | 4 |
Как ввести значение null в sql
Поля и переменные могут быть установлены в NULL с помощью того же синтаксиса, что и для обычных значений:
insert into MyTable values (1, 'teststring', NULL, '8-May-2004')
update MyTable set MyField = null where YourField = -1
if (Number = 0) then MyVariable = null;
— « Минуточку. но вы сказали, что MyField = NULL было недопустимо! »
Это верно. для оператора сравнения « = » (по крайней мере для СУБД Firebird до версии 2.0). Но здесь мы говорим о знаке « = », как об операторе присваивания . К сожалению, в SQL оба эти оператора имеют один и тот же символ. В случае присваивания, которое выполняется с помощью « = » или внутри списка вставки, вы можете трактовать NULL , как любое другое значение, — специальный синтаксис не требуется.
| Firebird Documentation Index → NULL в СУБД Firebird → Установка значения поля или переменной в NULL |
Обработка NULL значений
В языке SQL есть особый тип значений — null . Его используют для обозначения, что значения нет или оно не известно.
null значения вернут себя по-особому в операциях сравнения:
- Одно null значение не равно другому null значению (выражение null = null вернет false ).
- Одно null значение не не равно другому null значению (выражение null != null вернет false ).
Чтобы проверить значение на равенство null нужно после значения написать IS NULL . Например, 123 is null вернет false , а null IS NULL вернет true .
Получим все магазины без сайта:
SELECT * FROM store WHERE site_url IS NULL
| # | store_id | name | site_url |
|---|---|---|---|
| 1 | 600 | Umi | |
| 2 | 800 | Универсам | |
| 3 | 302 | Адалин-ultra |
Условие IS NOT NULL используется в запросах для выборки записей со значениями не равных значению NULL. Например, 123 IS NOT NULL вернет true , а null IS NOT NULL вернет false .
Работа с NULL-значениями в SQL
Условие IS NULL используется для выбора строк, в которых указанное поле имеет значение NULL . Условие IS NOT NULL используется для выбора строк, в которых указанное поле НЕ является NULL . Можно использовать функцию COUNT() с условием IS NULL для подсчета количества пустых строк.
Условие IS NULL в SQL
Условие IS NULL используется для выбора строк, в которых указанное поле имеет значение NULL . Например: