Употребата на isnull, ifnull, nullif е следната:
Използване на isnull(експр):Ако expr е null, тогава isnull() връща стойност 1, в противен случай връща 0. mySQL> Select IsnUll(1+1); -> 0 mysql> Select IsnUll(1/0); -> 1 Използването = за сравнения на нулеви стойности обикновено е грешно.
Функцията isnull() споделя някои от същите характеристики като оператора за нулево сравнение на is. Виж бележката за е null.
Използване на IFNULL(expr1,expr2):
Ако expr1 не е NULL, връщаната стойност на IFNULL() е expr1; В противен случай връща стойност expr2. IFNULL() връща или число, или низ, в зависимост от контекста, в който се използва.
mysql> SELECT IFNULL(1,0); -> 1 mysql> SELECT 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);
-> НУЛ mysql> SELECT NULLIF(1,2); -> 1 Ако параметрите не са равни, MySQL получава стойността expr1 два пъти.
|