【问题标题】:Java double to SQL Server data typeJava double 转 SQL Server 数据类型
【发布时间】:2014-05-13 19:47:23
【问题描述】:

我想从表中插入一些 Java Double 值(我正在使用 SQL Server)。 如何使用 Liquibase 创建上述表格?更准确地说,列应该是什么类型?下面的尝试不起作用。显然 Float 不够精确。

<column name="visitsAvg" type="FLOAT"/>

【问题讨论】:

  • 它不工作怎么办?你得到一个错误,如果是这样,那是什么?如果没有,它怎么不起作用?您是否尝试过使用DOUBLE 类型?
  • @MarkRotteveel 我正在使用 Spring Batch 并收到异常消息 The supplied value is not a valid instance of data type float. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision.

标签: java sql-server liquibase


【解决方案1】:

Liquibase 对列使用 JDBC 类型。 JDBC/SQL 类型 FLOAT 与 SQL Server 类型 FLOAT 不同。 JDBC 类型FLOAT 是一个32 位单精度浮点数。如果您需要 64 位双精度(SQL Server 中为 FLOAT(53)),则应指定 DOUBLE

liquibase 可能会将 type="FLOAT" 的请求转换为 SQL Server 中 FLOAT(24) 类型的列,这不足以以完全精度存储 Java double

【讨论】:

  • 我指定了 DOUBLE,但我仍然遇到同样的问题。我什至尝试过 java.sql.Types.DOUBLE,但没有任何改进。还有其他建议吗?
  • @Dragos 我认为您需要显示一些触发错误的实际代码以及 SQL Server 中的实际表定义
【解决方案2】:

问题是我得到的是 NaN 而不是数字。更准确地说,在我的代码中的某个时刻,除以 0。因此,问题不在于将 Java Double 转换为某种 SQL 类型,也不在于 Liquibase。我错误地认为问题可能出在某个地方。

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多