2011-11-02 69 views
13

我有了像25,50,100,等列名的表..可以使用一個數字來命名MySQL表列嗎​​?

當試圖不管我怎麼做

UPDATE table SET '25'='100' WHERE id = '1' 

我有更新表我得到一個錯誤,嘗試引用和反駁每一種方式,但沒有成功。

的錯誤是總是沿着線:您的SQL語法錯誤

;檢查對應於你的MySQL服務器版本使用附近的'25「= 100 WHERE ID = 1」在行1

如果我改變列名twentyfive正確的語法手冊 - 我不知道有問題,但這不是我想要的。是否可以使用數字作爲列名?

+1

我提供了一個答案,但我還是想說,我認爲使用數字字段名稱是有點非正統的,而且我往往只是字段的前綴。 – Matthew

+0

參考這篇文章,http://stackoverflow.com/questions/41711470/laravel-how-to-access-column-with-number-name-of-a-table –

回答

34

the docs

標識符可以以數字開始,但除非報價可能不包括純粹的數字。

這意味着你必須用反引號它蜱像`25`:

UPDATE table SET `25`='100' WHERE id='1' 
+1

謝謝。在閱讀了一些我同意的內容後,在列前加上一個更好的做法。 –

2

如果您需要基於數字出於某種原因,您可以在所有情況下爲數字附加一些簡單的前綴(例如「col25」,「col87」等)。

+1

這不是在MySQL中。 –

-1

名在MySQL可以開始以數字,但不能完全數字 - 他們不能混淆與一個整數。所以不行。

如果你用一個數字開始你的標識符,你應該很確定你堅持使用MySQL,因爲許多(大多數?)其他數據庫引擎在列名前面需要一個字母字符。 (如評論中所述,如果您始終使用反引號字符(如果您嘗試反引號且仍然出現語法錯誤,請使用您使用的精確反引語法),則允許使用完整整數列名稱

另外,當然,如果您選擇整數命名列,您將會產生一些難以閱讀的SQL!

+1

你確定嗎?我剛剛創建了一個名爲'1'的表,其中一列名爲'2',我當然必須自由地應用反引號。 –

+0

在MySQL中這不是真的。 ;) – Matthew

+1

事實上,你們都是正確的(MySQL文檔比informit.com更好)。 –

3

正如其他人所說,可以反勾選名稱表,列等的只要確保你沒有背打勾你否則將其解釋爲列名。因此,在你的例子只有25只需要回來打勾:

UPDATE table SET `25`=100 WHERE id=1 
相關問題