2016-12-04 25 views
1

我試圖訪問MySql中的一列數據,但問題是列名由幾個點組成。 例如列名在MySql的列名中使用多個點訪問列數據

DATA.COM.WITH.123.VALU 

我知道它的怪異,但該列是如何定義的,我嘗試不同的方法,例如把一個點在列名的開端,但它沒有工作

SELECT column AS '.DATA.COM.WITH.123.VALU' FROM table Datacom; 

select DATA.COM.WITH.123.VALU from Datacom; 

select "DATA.COM.WITH.123.VALU" from Datacom; 

但後來我得到這個錯誤

ERROR 1064 (42000): You have an error in your SQL syntax; check the 
manual that corresponds to your MySQL server version for the right syntax 
to use near '.WITH.123.VALU from Datacom' at line 1 

如果有人給我一個提示如何得到列的數據,同時列名包括在與這麼多點。 thanx提前幫助。

回答

1

最好的辦法很可能是爲了避免這個問題,開始與和使用沒有任何特殊字符的列名。如果這是不可能的,您可以使用反引號來轉義列名稱:

SELECT `DATA.COM.WITH.123.VALU` FROM Datacom; 
-- Here^----------------------^ 
+0

thanx的提示,我試過,但它沒有奏效。 SELECT^DATA.COM.WITH.123.VALU^FROM Datacom; 。 。 – Rio

+1

@xee你應該使用'不^ – Mureinik

+1

它完美的作品。 thanx的建議。 – Rio

1

轉義列名稱使用反引號:

SELECT column AS `.DATA.COM.WITH.123.VALU` 
FROM table Datacom; 

您可以訪問同樣的方式:

SELECT dc.`.DATA.COM.WITH.123.VALU` 
FROM (SELECT column AS `.DATA.COM.WITH.123.VALU` 
     FROM table Datacom 
    ) dc 

注意,列標識符本身需要進行轉義,而不是列名和表名。

然後,問自己爲什麼這段時間非常重要。爲什麼不使用下劃線,而不需要逃避?

SELECT column AS DATA_COM_WITH_123_VALU 
FROM table Datacom; 
+0

thanx for tip,但反引號在這裏不起作用。 – Rio

+0

@xee。 。 。您應該編輯問題並用反引號顯示版本。這是MySQL內置的轉義字符,我不知道如何關閉它(http://dev.mysql.com/doc/refman/5.7/en/identifiers.html)。 –

+0

反引號工作正常。非常感謝你。 .your和Mureinik的建議很有用,它工作得很好。 – Rio

相關問題