我有以下查询,它在直接针对DB2运行时运行得很好:
String sql =
"select slutt_dato + 1 day as tDato from klv80201 " +
"union " +
"select fra_dato as tDato from klv12101 where avtalenr = :avtalenr and kundenr = :kundenr " +
"union " +
"select fra_dato as tDato from klv12401 where avtalenr = :avtalenr and kundenr = :kundenr and MEDLEMSTATU < '32' " +
"order by tDato desc fetch first 1 rows only;";但是,当我使用H2作为数据库使用以下配置运行它时:
jdbc:h2:mem:play;MODE=DB2;LOCK_TIMEOUT=10000;LOCK_MODE=0我收到以下错误消息:
org.h2.jdbc.JdbcSQLException:列" slutt_dato“未找到;SQL语句:选择slutt_dato+1 day,从klv80201 union选择fra_dato as tDato from klv12101,其中avtalenr =?昆登尼呢?联合选择fra_dato作为tDato,从klv12401选择avtalenr =?昆登尼呢?和MEDLEMSTATU < '32‘顺序由tDato desc只取前1行;42122-149
如果删除"+1天“,则查询在H2中运行良好。来自H2 JDBC驱动程序的错误消息是错误的,列"SLUTT_DATO“确实存在,并且在删除"+1天”时运行良好。
有什么好的建议可以解释为什么H2会这样做呢?是虫子还是我误解了什么?
提前感谢
发布于 2011-12-01 15:08:28
H2不理解+ 1 day,因此在这里感到困惑。不过,这将起作用:
"select slutt_dato + 1 as tDato from klv80201 "但我担心这对IBM DB2没有用.我不认为在IBM DB2和H2上都能很容易地解决这个问题。
https://stackoverflow.com/questions/8339779
复制相似问题