【问题标题】:Column alias with leading space causes error: Unknown column 'BAR. COL1' in 'field list'带有前导空格的列别名会导致错误:未知列 'BAR。 '字段列表'中的 COL1'
【发布时间】:2013-10-14 21:26:52
【问题描述】:

我正在开发一个实用程序,该实用程序可以从具有机器生成的表/列名称的仓库中公开数据。允许用户为表/列指定新名称以使结果更有意义。别名可以是任何有效的 MySQL 标识符名称,但我发现包含前导空格的列名存在问题。现在我知道这将是一个 愚蠢 列名称,但我不希望仅仅因为我很懒且找不到正确的方法来做某事而对用户施加任何任意限制。

这个简单的 SQL 语句重现了问题:

SELECT ` COL1` FROM (SELECT 1 AS ` COL1`) BAR

错误代码:1054。“字段列表”中的未知列“COL1”

我错过了什么吗?我正在使用 MySQL 5.6.11。

【问题讨论】:

  • 请注意,这个查询是成功的,虽然它不应该成功(外部选择中没有前导空格):SELECT "COL1" FROM (SELECT 1 AS "COL1") BAR

标签: mysql sql whitespace alias


【解决方案1】:

你能检索表结构吗?想查看表 BAR 的实际列名。 运行上面的查询时,MSSQL 会删除列名中的所有空格。

【讨论】:

  • BAR 不是表,而是子查询的别名。此查询不涉及实际表,可以重写为:SELECT `COL1` FROM (SELECT 1 AS `COL1` FROM DUAL) AS BAR
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 2016-02-29
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多