从H2中选择具有空格的列的列名称

时间:2013-04-29 18:55:44

标签: java sql h2

我正在尝试使用H2和java从制表符分隔文件进行查询。但是,当select *没有问题时,其中一列在列名中有一个空格。当我尝试仅查询该列时,我得到一个例外:

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

看起来似乎没有抓住列名中的两个单词(Example ColumnName),而只抓取第一个。

这就是我所拥有的:

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

  

引用名称区分大小写

答案 1 :(得分:1)

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

SELECT * FROM [My Table]

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

jdbc:h2:~/test;MODE=MSSQLServer