2012-07-20 61 views
1

可能重复:
How do I escape reserved words used as column names? MySQL/Create TableMySQL的括号

这应该是一个容易回答,我希望。我在各种表中有一系列名字,如T(x,y,t),T(x,y,t-1),T(x + 1,y,t)等等。我知道有列名中的圆括号被忽略,但是如何在SELECT子句中引用像这样的名称(使用表名)?

举例来说,我已经试过之类的东西

SELECT A.JDAY, 'B.T(x,y,t)' 
FROM A, B 

SELECT A.JDAY, B.'T(x,y,t)' 
FROM A, B 

...但那些都似乎工作。

+1

反引用是“带引号的标识符”的默认字符。使用'SET sql_mode ='ANSI_QUOTES''(或任何包含ANSI_QUOTES的特殊组合模式),您还可以使用双引号字符。尽管我们通常只在启用双引号的脚本时使用双引号,但我们希望MySQL能够适应。不,反引号字符在MySQL中没有任何其他特殊用途,除了“引用”标识符。 – spencer7593 2012-07-20 21:43:35

回答

5

你可以使用反勾:

SELECT A.JDAY, B.`T(x,y,t)` 
FROM A, B 

没有测试,但它应该做的伎俩。

+1

请使用INNER JOIN或CROSS JOIN而不是逗号来表示表格连接。 – Sebas 2012-07-20 21:25:06

+0

太棒了,没想到,谢谢!反拨还有其他用途吗? (我通常使用连接,但我只是在此构造了一小段代码作为示例。) – Amy 2012-07-20 21:31:52

+0

好吧,它似乎与我的小测试片一起工作,但是当我将它合并到我的较大查询中时,我得到一个“访问冲突“错误。 – Amy 2012-07-20 21:43:11