【问题标题】:mysql parentheses in column name [duplicate]列名中的mysql括号[重复]
【发布时间】:2012-07-20 21:22:48
【问题描述】:

可能重复:
How do I escape reserved words used as column names? MySQL/Create Table

我希望这应该很容易回答。我在各种表中有一系列列名,例如 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

...但这些似乎都不起作用。

【问题讨论】:

  • 反引号是“引用标识符”的默认字符。使用SET sql_mode = 'ANSI_QUOTES'(或任何包含ANSI_QUOTES 的特殊组合模式),您还可以使用双引号字符。虽然我们通常只在使用已经有双引号的脚本时才启用它并实际使用双引号,但我们希望 MySQL 能够适应。不,反引号字符在 MySQL 中没有任何其他特殊用途,除了“引用”标识符。

标签: mysql


【解决方案1】:

你可以使用反勾号:

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

未经测试,但应该可以解决问题。

【讨论】:

  • 请使用 INNER JOIN 或 CROSS JOIN 代替逗号来表示表连接。
  • 太棒了,没想到,谢谢!反引号还有其他用途吗? (我通常使用连接,但我只是在这里编写了一小段代码作为示例。)
  • 嗯,它似乎适用于我的小测试件,但是当我将其合并到更大的查询中时,我收到“访问冲突”错误。
  • 没关系,重启 Navicat 就可以了!再次感谢!
  • 没问题。对于您的问题,它对表名也很有用。
猜你喜欢
  • 2013-04-05
  • 2020-09-28
  • 2011-12-13
  • 2016-11-01
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2019-06-24
  • 2018-10-10
相关资源
最近更新 更多