在MySql中访问列名称中包含多个点的列数据

时间:2016-12-04 14:48:34

标签: mysql sql select escaping

我正在尝试访问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提前帮助。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

最好的想法可能是避免这个问题开始并使用没有任何特殊字符的列名。如果无法做到这一点,您可以使用反引号来转义列名:

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