HSQLDB语句和Java NaN加倍

时间:2011-02-28 09:49:19

标签: java prepared-statement hsqldb

我目前正在使用HSQLDB来保存java数据。在这些数据中,有一些Double,其中一些可以是NaN的值(在javadoc中描述为0.0/0.0)。 HSQLDB知道如何在setDouble的{​​{1}}和setFloat中处理这些值。问题是,我必须使用PreparedStatement对象,而不是预编译的存储过程,而我却找不到使其工作的方法。
如果你有最简单的提示,那将是最受欢迎的:) 感谢。

编辑:这是我正在使用的一堆代码:

Statement

2 个答案:

答案 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