IF中的IF函数用于MySQL的兼容性

时间:2014-12-15 22:04:45

标签: mysql h2

我正在使用H2(使用MySQL兼容模式)为使用MySQL的软件编写一些自动化测试。不幸的是,似乎H2没有我们的许多查询使用的IF函数。如果没有用DECODE这样的方式重写我们的应用程序查询,那么它们是创建if函数的好方法,比如说是Alias吗?

我得到的错误:

WARNING: Failed to execute: SELECT IF(true,'TRUE!!','FALSE!!!') because: Function "IF" not found; SQL statement:

3 个答案:

答案 0 :(得分:6)

结束只重写查询以使用与数据库兼容的功能 - H2,MySql。就我而言,有关的功能被IFNULL取代。

答案 1 :(得分:3)

我刚遇到同样的问题,我用CASE/WHEN/THEN SQL语句解决了这个问题。因此,您可以按如下方式重写查询:

SELECT CASE WHEN true THEN 'TRUE!!' ELSE 'FALSE!!!' END;

当然它更冗长,但它适合H2和MySQL。

答案 2 :(得分:2)

是的,您可以将if函数创建为别名:

CREATE ALIAS IF NOT EXISTS `IF` AS $$
    String ifFunction(boolean condition, String exp1, String exp2){
        if(condition) {
            return exp1;
        } else {
            return exp2;
        }
    }
$$;