为什么 MySQL return 列名带有引号?

Why MySQL return column name with quotes?

我有这个:

...
SELECT 
    `id`, 
    `name`, 
    `user_id`, 
    `xml_tables`
...

在进行查询时,我收到了这个:

+- ----+------+---------+------------+
| `id` | name | user_id | xml_tables |
+------+------+---------+------------+
|    1 | name |       1 |        xml |
+------+------+---------+------------+

用带引号的 ID 列的名称。

这些不是您要查找的报价。

那些是单引号,它们看起来像这样:

'HELLO'

那些是反引号或:

`HELLO` 

MySQL 使用反引号作为列名的分隔符。它们不是名称的一部分,只是在这里显示。

当您使用诸如 GROUP 之类的保留字作为列名时,这会有所帮助。 这将失败:

 SELECT Group
 FROM   UserGroup

这将运行

SELECT `Group`
FROM   UserGroup

如果您 运行 如下所示的创建语句,您可能已将反引号作为名称的一部分包含在内:

CREATE TABLE `log` 
(
    ```log_id``` BIGINT(20) NOT NULL AUTO_INCREMENT,
    `log_text` LONGTEXT NULL,

    PRIMARY KEY (```log_id```)

)

我看到你正在调用一个存储过程。但是你没有在你的程序中显示代码。

我尝试重现问题:

mysql> create procedure sp_read_database(in i int)
    -> begin
    -> select 123 as `id`, 'name' as `name`, 456 as `user_id`, 'xml tables' as `xml_tables`;
    -> end

然后调用MySQL中的程序 Workbench 6.3.9:

我在结果网格的 id 列周围没有看到任何反引号。

我怀疑您的程序包含一些错误的代码格式。如果我在 id:

的列别名中添加文字反引号,我可以重现您的结果
mysql> create procedure sp_read_database(in i int)
    -> begin
    -> select 123 as ```id```, 'name' as `name`, 456 as `user_id`, 'xml tables' as `xml_tables`;
    -> end