【发布时间】: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
测试
【问题讨论】:
-
SQL 中没有布尔运算符
&或||。事实上||是SQL中的字符串连接运算符。布尔运算符是and和or。您正在谈论按位运算符。我相应地改变了话题 -
添加到 pom mvnrepository.com/artifact/com.vividsolutions/jts/1.13 在 SQL 语句中产生语法错误,但按位运算仍然无法按预期工作。我还找到了groups.google.com/forum/#!searchin/h2-database/bitwise/…,所以它可能还没有实现。
-
code.google.com/p/h2database/issues/detail?id=552 这个问题似乎是相关的,仍然没有提出解决方案。
标签: mysql bit-manipulation h2 bitwise-operators