2013-04-29 58 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 
相關問題