HSQL 列名包含 #
Posted
技术标签:
【中文标题】HSQL 列名包含 #【英文标题】:HSQL column name contains # 【发布时间】:2011-06-20 18:48:37 【问题描述】:我正在使用 JUnit 来测试应用程序。我决定在运行时使用 HSQL 创建一个内存数据库。当我模拟 Oracle 数据库时,这很好用。然而,当我尝试模拟我们现有的 DB2 数据库时,我遇到了一个问题。我们使用的其中一列在列名中有 # 符号(即“Person#”)。 HSQL 无法解释此字符,并在尝试加载架构时会抛出硬错误。
我尝试将 HSQL 置于 DB2 模式,但仍然没有成功。是否可以在 HSQL 或内存数据库中使用 # 符号?不幸的是,更改列名对于简单的测试覆盖率来说工作量太大。
【问题讨论】:
【参考方案1】:您需要用双引号将列名括起来:
CREATE TABLE foo
(
"PERSON#" VARCHAR(10)
)
不幸的是,您需要始终在访问该列时使用双引号
【讨论】:
谢谢!那成功了。太糟糕了,我将不得不总是使用双引号来访问该字段。但我认为 DB2 也将接受引号,因此我们将对 DAO 层进行必要的更改,以使我们的应用程序更加独立于数据库。 '#' 字符是根据 SQL 标准的非标准字符。 DB2 足够优雅以允许它,其他 DBMS 也可能对该字符有问题,因此如果您打算将此应用程序移植到另一个 DBMS,您可能会考虑将#
字符全部删除以上是关于HSQL 列名包含 #的主要内容,如果未能解决你的问题,请参考以下文章