SQLSyntaxErrorException:由于 HSQLDB 中的“COALESCE”导致的数据类型异常
SQLSyntaxErrorException: data type exception due to `COALESCE` in HSQLDB
我必须将 org.hsqldb 库版本从 2.2.9 升级到 2.4.0,以便支持带有 NOT EXIST
关键字的模式,如本网站另一个问题中所建议的,但后来我遇到很多 JUnit 测试失败
Caused by: java.sql.SQLSyntaxErrorException:
data type cast needed for parameter or null literal in statement
[INSERT INTO xxx(y) VALUES (COALESCE(?,?))]
我的 hsqldb 看起来像:
CREATE TABLE xxx (
y VARCHAR (32) NOT NULL
)
他们唯一对我有用的是在插入之前将 COALESCE 逻辑移动到我的 Java 来源。
问题:
这让我觉得模式中的要求 NOT NULL
直到 2.4.0 版本才起作用,这就是为什么我的测试现在才失败。除了删除此要求外,我还能做些什么来避免该限制?
是否有像 COALESCE 这样的函数,如果所有参数都为空,则插入默认值?
你可以用演员表修复它:
INSERT INTO xxx(y) VALUES (COALESCE(CAST(? AS VARCHAR(32)),?)
我必须将 org.hsqldb 库版本从 2.2.9 升级到 2.4.0,以便支持带有 NOT EXIST
关键字的模式,如本网站另一个问题中所建议的,但后来我遇到很多 JUnit 测试失败
Caused by: java.sql.SQLSyntaxErrorException:
data type cast needed for parameter or null literal in statement
[INSERT INTO xxx(y) VALUES (COALESCE(?,?))]
我的 hsqldb 看起来像:
CREATE TABLE xxx (
y VARCHAR (32) NOT NULL
)
他们唯一对我有用的是在插入之前将 COALESCE 逻辑移动到我的 Java 来源。
问题:
这让我觉得模式中的要求
NOT NULL
直到 2.4.0 版本才起作用,这就是为什么我的测试现在才失败。除了删除此要求外,我还能做些什么来避免该限制?是否有像 COALESCE 这样的函数,如果所有参数都为空,则插入默认值?
你可以用演员表修复它:
INSERT INTO xxx(y) VALUES (COALESCE(CAST(? AS VARCHAR(32)),?)