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 列名包含 #的主要内容,如果未能解决你的问题,请参考以下文章

如何使用包含“$”的列名进行查询?

如何使用包含点/句点的列名创建火花数据框?

当列名包含空格和特殊字符时从 data.table 包中读取?

R:识别数据框中的列名是不是包含字符串

Hive:查询表,列名包含关键字和空格

hive查询结果显示列名且不包含表明