2014-01-23 54 views
1

我正在閱讀電子表格中的數據。電子表格中的一列包含空格。如何使用coldfusion查詢中的空格讀取列?

例如,列名稱是[名,姓,名]。

閱讀電子表格後,我得到一個qryObj。 現在,當我試圖

<cfquery dbtype="query" name="getName"> 
    SELECT [first name] 
    FROM qryObj 
</cfquery> 

它拋出DB錯誤從查詢中讀取的第一個名字。我也嘗試過['first name']也仍然是拋出錯誤。

的錯誤是:

Query Of Queries syntax error. 
Encountered "[. Incorrect Select List, Incorrect select column 

回答

8

我做了瘋狂的東西,如谷歌搜索看到什麼人在其他情況下做了,並嘗試不同的SQL方法來逃避非標準列名(背蜱,方barackets,雙引號,其連擊),並提請一個空白。所以我同意@da_didi QoQ/IMQ不適合這個。你應該在Adobe bug tracker中提出一張票。

你可以做SELECT *,它不需要引用列名。或者你可以序列化查詢,使用字符串替換來重新命名列,然後再次反序列化它,然後再修改名稱上的QoQ。儘管如此,我只能用少量的數據來做到這一點。

或者您可以推回XLS文件的owbner並說「除非您修改列名稱否否」。

您也可以使用excludeHeaderRow從XLS文件中取消列名,然後指定您自己的列名稱。我怎麼知道有人能做到這一點?通過RTFMing<cfspreadsheet> docs

+0

從一開始我只告訴過你我還沒有找到任何東西。這就是爲什麼要求解決方案。但是你拖延了這段談話時間太長了 –

+4

*沒有意義*你說你已經做過任何你自己的調查,直到你提到「dreamincode.net」鏈接。你列出了你試過的一件東西,就是這樣。您沒有說明您是如何從電子表格中閱讀的,也沒有說明您在電子表格中閱讀過的任何選項。你認爲我會說*你沒有給我們足夠的信息,也沒有告訴我們你試過了什麼*如果你*做過這些事情? –

+0

(編輯)*指定你自己的列名*這應該工作,是最好的選擇。否則,您還可以利用查詢列是數組這一事實,並添加一個具有「有效」名稱的新列。即'queryAddColumn(qryObj,「FirstName」,qryObj [「First Name」])''。然後在查詢中引用'FirstName'。也就是說,我不確定它是如何在內部處理的(深層複製或參考)。所以它可能會受到與序列化解決方法相同的限制。 – Leigh

0

你不能。最佳做法:我總是用下劃線替換所有空格。

+0

da_didi:我知道。但我沒有權限更改電子表格。 –

0

簡單。只是別名選擇。從qryObj選擇[FIRSTNAME]作爲FIRSTNAME

+1

儘管對於SQL Server是正確的,但OP使用的是[QoQ](https://wikidocs.adobe.com/wiki/display/coldfusionen/Query+of+Queries+user+guide),這是非常不同的。 QoQ不支持這種列名轉義。 – Leigh