За съжаление (за вашия случай) поведението на LEAST беше променено в MySQL 5.0.13 (http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least ) - използва се за връщане на NULL само ако всички аргументи са NULL.
Тази промяна дори беше докладвана като грешка:http://bugs.mysql.com/ bug.php?id=15610 Но корекцията беше само за документацията на MySQL, обяснявайки новото поведение и нарушаването на съвместимостта.
Вашето решение беше едно от препоръчаните решения. Друг може да използва IF оператор:
SELECT IF(Col1 IS NULL OR Col2 IS NULL, COALESCE(Col1, Col2), LEAST(Col1,Col2))