Использование isnull, ifnull, nullif следующее:
Использование isnull (expr):Если expr равен null, то isnull() возвращает значение 1, иначе возвращает 0. MySQL> выберите IsnUll(1+1); -> 0 mysql> выберите Isnull(1/0); -> 1 Использование = для сравнения нулевых значений обычно неверно.
Функция isnull() обладает некоторыми из тех же характеристик, что и оператор сравнения нуля is. См. примечание о null.
Использование IFNULL(expr1,expr2):
Если expr1 не NULL, возвратное значение IFNULL() равно expr1; В противном случае он возвращает значение expr2. IFNULL() возвращает либо число, либо строку, в зависимости от контекста, в котором она используется.
mysql> ВЫБРАТЬ IFNULL(1,0); -> 1 mysql> ВЫБРАТЬ IFNULL(NULL,10); -> 10 mysql> SELECT IFNULL(1/0,10); -> 10 mysql> SELECT IFNULL(1/0, «да»);
-> «да»
Значение результата по умолчанию для IFNULL(expr1,expr2) — более «общее» из двух выражений, в порядке STRING, REAL или INTEGER。 Предположим ситуацию, когда таблица на основе выражений или MySQL должна хранить возвращаемое значение IFNULL() во временной таблице во внутренней памяти: CREATE TABLE tmp SELECT IFNULL(1,'test') AS test; В этом примере тестовый столбец имеет тип CHAR(4).
Использование NULLIF(expr1,expr2): Если expr1 = expr2 верно, тогда возвращаемое значение равно NULL, иначе возвратное значение — expr1. Это то же самое, что и CASE WHEN expr1 = expr2 Тогда NULL ELSE expr1 END остаётся тем же. mysql> SELECT NULLIF (1,1);
-> NULL mysql> ВЫБРАТЬ NULLIF(1,2); -> 1 Если параметры не равны, MySQL получает значение expr1 дважды.
|