Примечание: я переместил суть этого вопроса в здесь , узнав кое-что из того, что происходит, но все еще желая понять. (По сути, ISNULL и COALESCE ведут себя необычно, когда переменная либо не определена, либо была установлена в NULL перед определением.)
Мне, должно быть, не хватает чего-то очень простого, но я не вижу ответов на аналогичный , предыдущий вопрос. Я хочу использовать значение по умолчанию, если переменная не установлена, но не вижу, как это сделать.
SET @x = NULL;
SELECT IFNULL(NULL, 5), IFNULL(@x,5), IF(@x IS NULL, 5, @x); -- gives 5, BLOB, BLOB
Я читал, что COALESCE - правильная функция для использования здесь, но COALESCE (@x , 5) также дает BLOB.
Что мне не хватает? Действительно ли невозможно сказать x = x OR 5?