Java双精度到SQL Server数据类型
我想从表中插入一些Java双值和一些列(我使用的是SQL Server)。 如何使用Liquibase创建上述表格?更确切地说,列应该是什么类型?下面的尝试无效。显然,浮动法不够精确Java双精度到SQL Server数据类型,java,sql-server,liquibase,Java,Sql Server,Liquibase,我想从表中插入一些Java双值和一些列(我使用的是SQL Server)。 如何使用Liquibase创建上述表格?更确切地说,列应该是什么类型?下面的尝试无效。显然,浮动法不够精确 <column name="visitsAvg" type="FLOAT"/> Liquibase对列使用JDBC类型。JDBC/SQL类型FLOAT与SQL Server类型FLOAT不同。JDBC类型FLOAT是一个32位单精度浮点。如果需要64位双精度(FLOAT(53),则应指定DOUBLE)
<column name="visitsAvg" type="FLOAT"/>
Liquibase对列使用JDBC类型。JDBC/SQL类型
FLOAT
与SQL Server类型FLOAT
不同。JDBC类型FLOAT
是一个32位单精度浮点。如果需要64位双精度(FLOAT(53)
,则应指定DOUBLE
)
可能是liquibase将对
type=“FLOAT”
的请求转换为SQL Server中类型为FLOAT(24)
的列,这不足以完全精确地存储Javadouble
。问题是我得到的是NaN而不是数字。更确切地说,在我的代码中的某个点上,有一个0的除法。因此,问题不在于将JavaDouble转换为某种SQL类型,也不在于Liquibase。我错误地认为问题可能存在于某个地方。它不起作用了,怎么办?您是否有错误,如果有,是什么错误?如果没有,它是如何不工作的?您是否尝试过使用类型DOUBLE
?@markrotVeel我使用的是Spring批处理,出现异常消息提供的值不是数据类型float的有效实例。检查源数据是否存在无效值。无效值的一个例子是刻度大于精度的数字类型的数据。
我指定了DOUBLE,但仍然遇到同样的问题。我甚至尝试过java.sql.Types.DOUBLE,但没有任何改进。还有其他建议吗?@Dragos我认为您需要显示一些触发错误的实际代码以及SQL server中的实际表定义