我目前正在使用HSQLDB来保存java数据。在这些数据中,有一些Double,其中一些可以是NaN
的值(在javadoc中描述为0.0/0.0
)。 HSQLDB知道如何在setDouble
的{{1}}和setFloat
中处理这些值。问题是,我必须使用PreparedStatement
对象,而不是预编译的存储过程,而我却找不到使其工作的方法。
如果你有最简单的提示,那将是最受欢迎的:)
感谢。
编辑:这是我正在使用的一堆代码:
Statement
答案 0 :(得分:3)
你的意思是你需要一种在SQL语句中编写NaN的方法吗?以下适用于HSQLDB和H2 database:
select sqrt(-1) from dual
但是,它不适用于Apache Derby和PostgreSQL(我没有测试其他数据库)。
答案 1 :(得分:1)
使用HSQLDB 1.8.x,您可以使用(0.0e1 / 0.0e1)作为返回NaN的表达式。
例如:
create table t (d double)
insert into t values (0.0e1/0.0e1)
对于HSQLDB 2.1及更高版本,必须使用SQL语句指定属性:
SET DATABASE SQL DOUBLE NAN FALSE
或作为连接属性:
hsqldb.double_nan=false