如何在MySQL中选择带空格的列名

如何在MySQL中选择带空格的列名,mysql,sql,Mysql,Sql,我正在从事一个项目,其中另一个开发人员创建了一个列名称为'Business Name'的表。这是两个单词之间的空格。如果我运行一个名为“Business Name”的SELECT语句,它会说没有名为“Business”的列 如何解决此问题?通常第一步是首先不要这样做,但如果已经这样做了,则需要正确引用列名: SELECT `Business Name` FROM annoying_table 通常,这类东西是由使用过Microsoft Access之类的东西的人创建的,他们总是使用GUI来完成

我正在从事一个项目,其中另一个开发人员创建了一个列名称为
'Business Name'
的表。这是两个单词之间的空格。如果我运行一个名为“Business Name”的
SELECT
语句,它会说没有名为“Business”的列


如何解决此问题?

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

SELECT `Business Name` FROM annoying_table

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

我认为双引号也可以:

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

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

对每个人都进行了测试,但正确的编码方法是重命名插入下划线的列,这样就不会有间隙。这将确保编码时零错误。为公共显示打印列名时,您可以搜索并替换以将下划线替换为空格。

如果双引号无效,请尝试将字符串包含在方括号内

例如:

SELECT "Business Name","Other Name" FROM your_Table
可以更改为


从您的_表中选择[Business Name],[Other Name]

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

单引号-
“企业名称”
-错误


Backtick-
`Business Name`
-更正

我是因为MS访问问题来到这里的

反勾号对MySQL很好,但会产生奇怪的错误,如MS Access中的“无效查询名称:Query1”,仅对于MS Access,请使用方括号:

应该是这样的

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

@塔德曼:若我复制并粘贴你们的查询,它会工作,但若我从键盘上输入单引号,它就不工作了。例如,从表格中选择“企业名称”不起作用,因为它不是单引号,而是勾号符号,通常可以在键盘上从数字1开始的左边找到。有三种引号,单引号、双引号“,以及向后的
`
。在MySQL中,前两个是等价的,可以互换使用。在其他平台上,情况并非总是如此,Postgre尤其对它们的处理方式有所不同。反勾号仅用于数据库或列名转义。@Robert,那么您可以这样写:`Hasting_table`.`Business name`.@Gathide在表示层/应用层,而不是数据库中执行此操作。数据库中的名称应该简洁、简短但有意义,并避开任何与关键字冲突有关的问题,以避免必须逃避它们。您可以在报告中以用户想要的任何语言输入任何内容。这将始终选择字符串“Business Name”,而不是列的内容。@JonasB请再次检查,我使用了双引号而不是单引号。。。。单引号将产生字符串,双引号不会。问题是关于MySQL的,在标准设置的MySQL服务器上,双引号和单引号是等效的。请参阅此答案以了解更多信息,为什么在MySQL中使用双引号是一个坏主意:我没有足够的声誉来正确评论,因此在结尾处加了标记:上面在评论中发布的解决方案:`Hasting_table`。`Business Name`在MySQL的where语句中对我不起作用。删除表名上的反引号确实有效:例如,讨厌的_表。`Business name`