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


90

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

我怎么解决这个问题?


我没有足够的信誉评论不当,使标记在结束:该解决方案在评论上面贴:`annoying_table`.`Business Name`在MySQL并没有为我工作在一个WHERE语句。在商家
Tim0th1

Answers:


158

通常,第一步是首先不要这样做,但是如果已经完成,则需要诉诸正确的列名:

SELECT `Business Name` FROM annoying_table

通常,这类事情是由使用Microsoft Access之类的人创建的,并且总是使用GUI来做他们的事情。


@tadman如果我复制并粘贴查询,则可以使用,但如果我从键盘输入单引号,则无法使用。即。从annoying_table中选择“公司名称”不起作用
ehp

17
这是因为它不是单引号,而是打勾,你通常可以在键盘上找到符号,从数字1左
peterm

5
有3种报价,单',双",和倒退`。在MySQL中,前两个是等效的,可以互换使用。在其他平台上并非总是如此,特别是Postgres对待它们的方式有所不同。反引号仅用于数据库或列名的转义。
tadman

方括号[]对我不起作用。没有错误,但没有显示。另一方面,效果很好。
杰伊

1
@Robert然后,您应该这样写:“ annoying_table”。“企业名称”。
ErikČerpnjak2015年

20

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

例如:

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

可以更改为

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


16

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

单引号'Business Name'--错误

反引号`Business Name`--正确


3

对于每个人而言,但正确的编码方式是重命名插入下划线的列,以确保没有空格。这样可以确保编码时的零错误。打印列名以供公共显示时,您可以搜索并替换下划线,以空格代替。


0

对于MS Access,方括号起作用,并且反引号引起各种奇怪的错误,例如“无效的查询名称:Query1”

它应该看起来像这样

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

-3

我认为双引号也可以:

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

但是,如果有人使用MS SQL Server,我只会在SQL Server而不是mySQL上进行测试。


5
这将始终选择字符串“企业名称”,而不是列的内容。
JonasB'5

@JonasB请再次检查,我使用双引号而不是单引号...。单引号将导致字符串,双引号不会。
Vin.X

这个问题专门针对MySQL,在具有标准设置的MySQL服务器上,双引号和单引号是等效的。请参阅以下答案以获取更多信息,为什么在MySQL中使用双引号为什么不是一个好主意:stackoverflow.com/a/14123649/4172652
JonasB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.