2017-08-24 127 views
0

我有這個疑問Excel的SQL數據類型不匹配

SELECT * 
FROM [RawData$] 
WHERE 'Temperature[°C]' <= 100 

但在執行我得到這個錯誤:

數據類型不匹配的條件表達式。

本欄中的數據是100%的整數,所以我猜這是沒有問題的。

而且這工作得很好:

SELECT * 
FROM [RawData$] 
WHERE 'Temperature[°C]' 

我也試過這個太多,但後來我得到根本沒有值:

SELECT * 
FROM [RawData$] 
WHERE 'Temperature[°C]' <= '100' 

其實最後一個問題是:

什麼查詢我是否需要搜索一個名字是:溫度[°C]

[Temperature[°C]]
[Temperature[[]°C]]

不起作用。

+1

您試圖將一個字符串('Temperature [°C]')與一個整數(100)進行比較。您可能想要訪問名爲「溫度[°C]」的*行* – Heinrich

+0

是的,任何想法,我該怎麼做? –

+0

不是沒有看到您的數據集。 '''符號只適用於SQL中的字符串,所以如果你的專欄叫做'Temperature',你應該把它放在方括號中,或者用雙引號。 – ssn

回答

2

WHERE 'Temperature[°C]' <= 100將文字字符串Temperature[°C]與整數100進行比較。代替使用WHERE [Temperature(°C)] < 100

注:

  • 方括號[]保留周圍的字段名(就像你想使用單引號')在這種特殊情況下
  • 被包裹,方括號在你的頭得到解釋爲正常括號()
+0

完美,非常感謝! –

+0

不用擔心。通過在excel表中總是使用符合數據庫的頭文件,可以讓你的生活更輕鬆,你可能會用sql –

+0

查詢我對這裏發生的事情感到困惑......你能解釋一下,如果他的列名是'溫度[℃]'?我試着用CTE AS(SELECT'TEST'「Temperature [°C]」)選擇[溫度(℃)]來自CTE',錯誤'無效的列名'溫度(°C)'。我正試圖把我的頭圍繞在這!我從不處理列名中的括號。 – justiceorjustus

0

我認爲這個問題是列名有括號,所以你必須也許不喜歡這樣寫道:

SELECT * 
FROM [RawData$] 
WHERE "Temperature[°C]" <= '100' 

用雙引號,而不是。讓我知道這是否有效。

+0

爲字段和表名,sql使用方括號'[]'而不是引號''''''' '。單引號和雙引號總是被解釋爲字符串的包裝器。 –

+0

@MartinDreher我不同意。您可以嘗試'SELECT「TEST」',它會將「TEST」解釋爲列名,錯誤爲'無效列名'TEST'。'SELECT'TEST'「TEST」'在雙引號中使用別名。做'SELECT'TEST'「[TEST]」'允許在列名中使用括號。有人糾正我,如果我錯了。你可以做'SELECT'列'FROM Table','SELECT Column FROM Table'和'SELECT [Column] FROM Table',所有結果都一樣。 – justiceorjustus