2

我正在尝试使用 H2 和 java 从制表符分隔的文件中查询。但是,当我select *没有问题时,其中一列的列名中有一个空格。当我尝试仅查询该列时,出现异常:

Caused by: org.h2.jdbc.JdbcSQLException: Column "EXAMPLE" not found; SQL statement:

看起来好像它没有抓住列名中的两个词(示例 ColumnName),但只抓住了第一个。

这就是我所拥有的:

System.out.println( simpleJdbcTemplate.queryForList( "SELECT Example ColumnName FROM CSVREAD('" + fileName
                + "', null,'UTF-8', chr(9)) where send = 1;", new Object[] {} ) );

我猜有一种特殊的语法可以做到这一点,但我似乎找不到它。我尝试将列名括在:方括号、单引号、双引号、刻度线都无济于事。

有没有办法使用名称中包含空格的列来查询 H2?

4

2 回答 2

4

根据文档,双引号应该可以解决问题。请记住在 Java 中正确转义它们,即将列名存储在 a 中String,使用

String exampleColumnName = "\"Example ColumnName\"";

另外,请注意它是区分大小写的,来自文档:

引用的名称区分大小写

于 2013-04-29T19:21:48.757 回答
1

如果您在连接属性中设置了“MODE=MSSQLServer”,也可以使用方括号 []。例子:

SELECT * FROM [My Table]

连接字符串看起来像这样:

jdbc:h2:~/test;MODE=MSSQLServer
于 2013-09-13T12:38:56.650 回答