我正在尝试使用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?
答案 0 :(得分:4)
根据the documentation,双引号应该可以解决问题。
请记住在Java中正确地转义它们,即只将列名存储在String
中,使用
String exampleColumnName = "\"Example ColumnName\"";
另外,请注意它是区分大小写的,来自文档:
引用名称区分大小写
答案 1 :(得分:1)
如果在连接属性中设置“MODE = MSSQLServer”,也可以使用方括号[]。例如:
SELECT * FROM [My Table]
连接字符串看起来像这样:
jdbc:h2:~/test;MODE=MSSQLServer