【问题标题】:h2 database bit wise operation(&) invalid syntax MySqlh2 数据库按位操作(&)无效的语法 MySql
【发布时间】:2014-09-08 09:41:11
【问题描述】:

h2 数据库错误的按位操作 (&,&&,|,||) 会产生无效的语法错误。

Connection con=jdbcCon.getConnection();
PreparedStatement statement = con.prepareStatement("SELECT * FROM cars WHERE status & 128");
//this version works -> BITAND(`status`,128) ");

我尝试了使用;MODE=MySQL 的 jdbc 连接,但没有使用它。 SQL 查询在 MySQL 数据库中是正确的。 BITAND 运算符有效,但我认为应该支持位运算符。

Exception:
org.h2.jdbc.JdbcSQLException: General error SQL statement: SELECT * FROM cars WHERE status & 128 [50000-181]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
Caused by: java.lang.ClassNotFoundException: com.vividsolutions.jts.geom.CoordinateSequenceFilter

POM:
com.h2数据库 h2 1.4.181 测试

【问题讨论】:

标签: mysql bit-manipulation h2 bitwise-operators


【解决方案1】:

H2 中的 && 运算符是为边界框相交测试保留的。这就是 H2 尝试加载 JTS 拓扑套件库的原因。

对于按位运算,您必须使用以下 H2 函数:

【讨论】:

  • 所以 MySQL 模式不会改变(理解)那个查询,所以它不完全兼容 mysql?这是否意味着所有生产查询都必须重写才能兼容?
  • H2的解析器需要修改才能管理 | & ^ 运算符。您可以在此处查看运算符功能 code.google.com/p/h2database/source/browse/trunk/h2/src/main/… 的解析器部分之一。您应该在 H2 google 组上发帖以添加此功能请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
  • 2020-08-12
  • 1970-01-01
  • 2023-04-04
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多