使用带有绑定变量的 JDBC 准备语句将 BigDecimal 值插入 NUMERIC 列时,小数部分会丢失。另一方面,不使用绑定变量时,保留小数部分。
create table DS_TEST.BIGDECIMAL_TEST (NUMERIC_COL numeric)
String connectionString = "jdbc:bigquery://${host}:${port};ProjectId=${projectId};OAuthType=${OAuthType};OAuthServiceAcctEmail=${OAuthServiceAcctEmail};OAuthPvtKeyPath=${OAuthPvtKeyPath}"
Class.forName("com.simba.googlebigquery.jdbc42.Driver").newInstance()
Connection connection = DriverManager.getConnection(connectionString)
// insert statement without bind variable
PreparedStatement preparedStatement = connection.prepareStatement
("insert into `${projectId}`.DS_TEST.BIGDECIMAL_TEST (NUMERIC_COL) values (123.45)")
preparedStatement.executeUpdate()
// insert statement using bind variable
preparedStatement = connection.prepareStatement
("insert into `${projectId}`.DS_TEST.BIGDECIMAL_TEST (NUMERIC_COL) values (?)")
preparedStatement.setBigDecimal(1, new BigDecimal("567.89"))
preparedStatement.executeUpdate()
preparedStatement.close()
我期望输出:
+-------------+
| NUMERIC_COL |
+-------------+
| 123.45 |
| 567.89 |
+-------------+
但实际输出是
+-------------+
| NUMERIC_COL |
+-------------+
| 123.45 |
| 567 |
+-------------+
这是一个错误还是我错过了什么?