繁体   English   中英

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

[英]IF function in H2 for MySQL compatibility

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

我得到的错误:

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM