Аналог ISNULL из MS sql (T-SQL) в MySql

29.11.2017 11:26:12

Сразу уточню нормальное решение - заменит ISNULL на ifnull , а статья просто демонстрация создания и использования хранимых процедур в MySql.

Итак, столкнулся с тем, что ISNULL для MS sql, в отличии от версии MySql получает на вход 2 значения. (Первое - что проверяем, второе - возвращаемое значение, если первый аргумент NULL)

Для Решения задачи написал процедуру:

 
DROP PROCEDURE `myIsnull` ;
CREATE DEFINER = `root`@`localhost` PROCEDURE `myIsnull` ( IN `a` INT( 11 ) , IN `b` INT( 11 ) ) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER SELECT IF( ISNULL( a )
OR a =0, b, a ) AS ret

- проблема: вызывать ее нужно используя CALL, а он не везде поддерживается.

Пример не работающего кода:

 
SET @pWeight =1;

SELECT
CASE
WHEN @pWeight > call myIsnull(10,0)
THEN 'is twenty'
ELSE 'is older than 22'
END AS WeightCost

Возможное решение - сделать не процедуру, а функцию, вариант не тестировался


pic1


Категории: SQL
Яндекс.Метрика