2017-11-11 15 views
1

私はこれがあります。MySQLが引用符付きのカラム名を返すのはなぜですか?

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

をしてクエリを作成するとき、私はこのrecive:引用符でID列の名前と

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

を。

+2

私は見たことがないMySQLがこれを行います。あなたはこれを見る環境は何ですか? MySQLの5.7.19-ログインして、私はワークベンチでクエリを行うと協力 –

+0

イム。 [リンク](http://prntscr.com/h99dln) – user3151869

+0

これは私が前にテーブルの名前を入れた場合に起こって停止します: 'table_name'.'id' – user3151869

答えて

1

これはあなたが探している見積もりではありません。

者は、彼らが次のようになりシングルクォートされています

'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```) 

) 
2

を私はあなたがストアドプロシージャを呼び出しているのを見ます。しかし、あなたはあなたの手続きにコードを表示していません。

私は、問題を再現してみました。すると

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のワークベンチ6.3.9でプロシージャを呼び出す:

enter image description here

私は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 

enter image description here

+1

この場合はYipです。 – Namphibian

関連する問題