我正在使用H2(使用MySQL兼容模式)为使用MySQL的软件编写一些自动化测试。不幸的是,似乎H2没有我们的许多查询使用的IF
函数。如果没有用DECODE这样的方式重写我们的应用程序查询,那么它们是创建if函数的好方法,比如说是Alias吗?
我得到的错误:
WARNING: Failed to execute: SELECT IF(true,'TRUE!!','FALSE!!!') because: Function "IF" not found; SQL statement:
答案 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;
}
}
$$;