2013-04-29 56 views
2

我试图从H2和java的制表符分隔文件中进行查询。当我select *没有问题,但是,其中一列在列名称中有一个空格。当我尝试在这一点栏查询我得到一个异常:从H2中选择具有空格的列的名称

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?

+0

只是猜测,但你尝试过双引号或括号? – Limey 2013-04-29 19:20:59

+0

是的,我试着把列名括在方括号内,单引号,双引号,刻度标记都无济于事。 – javamonkey79 2013-04-29 19:21:49

回答

4

根据the documentation,双引号应该可以做到。 记住正确逃避他们在Java中,即只存储在String你的列名,使用

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

另外,还要注意它是区分大小写,从文档:

引用名称是区分敏感

+0

乌,我错过了大小写敏感的部分!感谢您找到它的文档,这有助于很多。 – javamonkey79 2013-04-29 19:24:57

1

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

SELECT * FROM [My Table] 

连接字符串会是这个样子:

jdbc:h2:~/test;MODE=MSSQLServer 
相关问题