【问题标题】:How to select a column name with a space in MySQL [duplicate]如何在MySQL中选择带有空格的列名[重复]
【发布时间】:2012-12-20 21:04:38
【问题描述】:

我正在开展一个项目,在该项目中,另一个开发人员创建了一个表,其列名类似于 'Business Name'。那是两个词之间的空格。如果我使用“企业名称”运行SELECT 语句,它会说没有名称为“企业”的列。

我该如何解决这个问题?

【问题讨论】:

  • 我没有足够的声誉来正确评论,所以在最后标记:上面在 cmets 中发布的解决方案:`annoying_table`.`Business Name` 没有在 mySQL 中的 where 语句中为我工作。删除表名上的反引号确实有效:即 annoying_table.`Business Name`

标签: mysql sql


【解决方案1】:

通常第一步是首先不要这样做,但如果已经这样做了,那么你需要正确地引用你的列名:

SELECT `Business Name` FROM annoying_table

通常这类东西是由使用过 Microsoft Access 之类的东西并总是使用 GUI 来完成他们的事情的人创建的。

【讨论】:

  • @tadman 如果我复制并粘贴您的查询,它可以工作,但如果我从键盘输入单引号,它就不起作用。 IE。从烦人的表中选择“公司名称”不起作用
  • 这是因为它不是单引号,而是 tick 符号,您通常可以在键盘上从数字 1 左侧找到。
  • 引号分三种,单引号',双引号",反引号`。在 MySQL 中,前两个是等价的,可以互换使用。在其他平台上并非总是如此,特别是 Postgres 以不同的方式对待它们。反引号仅用于数据库或列名转义。
  • @Robert 那么你可以这样写:`annoying_table`.`Business Name`。
  • @Gathide 在表示/应用程序层中执行此操作,而不是在数据库中。数据库中的名称应该简洁、简短但有意义,并回避关键字冲突的任何问题,以避免不得不转义它们。您可以在报告中以用户想要的任何语言输入任何内容
【解决方案2】:

如果双引号不起作用,请尝试将字符串包含在方括号内。

例如:

SELECT "Business Name","Other Name" FROM your_Table

可以改成

SELECT [Business Name],[Other Name] FROM your_Table

【讨论】:

    【解决方案3】:

    你需要使用反引号而不是单引号:

    单引号 - 'Business Name' - 错误

    反引号 - `Business Name` - 正确

    【讨论】:

      【解决方案4】:

      每个人都有自己的代码,但正确的编码方法是重命名插入下划线的列,这样就没有间隙。这将确保编码时零错误。在打印列名以供公开显示时,您可以搜索并替换以将下划线替换为空格。

      【讨论】:

        【解决方案5】:

        我遇到了 MS Access 问题。

        反引号对 MySQL 有好处,但它们会产生奇怪的错误,例如 MS Access 中的“Invalid Query Name: Query1”,仅对于 MS Access,使用方括号:

        应该是这样的

        SELECT Customer.[Customer ID], Customer.[Full Name] ...
        

        【讨论】:

        • 这也适用于csvsql (csvkit)。
        【解决方案6】:

        我认为双引号也可以:

        SELECT "Business Name","Other Name" FROM your_Table
        

        但我只在 SQL Server 而非 mySQL 上进行测试,以防有人使用 MS SQL Server。

        【讨论】:

        • 这将始终选择字符串“企业名称”,而不是列的内容。
        • @JonasB 请再检查一下,我用的是双引号而不是单引号....单引号会导致字符串,双引号不会。
        • 这个问题专门关于 MySQL 并且在具有标准设置的 MySQL 服务器上,双引号和单引号是等效的。请参阅此答案以获取更多信息,为什么在 MySQL 中使用双引号是一个坏主意:stackoverflow.com/a/14123649/4172652
        猜你喜欢
        • 1970-01-01
        • 2022-07-07
        • 2010-10-05
        • 2018-01-03
        • 1970-01-01
        • 2018-01-13
        • 1970-01-01
        • 2012-12-01
        相关资源
        最近更新 更多