MySQLでスペースを含む列名を選択する方法[重複]


90

別の開発者がのような列名でテーブルを作成するプロジェクトに取り組んでいます'Business Name'。それは2つの単語の間のスペースです。SELECT'Business Name'でステートメントを実行すると、'Business'という名前の列がないと表示されます。

どうすればこの問題を解決できますか?


私は適切にコメントするのに十分な評判がないので、最後にタグを付けました:上記のコメントに投稿された解決策:ʻannoying_table`.`BusinessName`はmySQLのwhereステートメントでは機能しませんでした。テーブル名に後ろの引用符をドロップすると機能しました。つまり、annoying_table.`Business Name`
Tim0th1

回答:


158

通常、最初のステップはそもそもそれを行わないことですが、これがすでに行われている場合は、列名を適切に引用することに頼る必要があります。

SELECT `Business Name` FROM annoying_table

通常、これらの種類のものは、Microsoft Accessのようなものを使用し、常にGUIを使用して作業を行う人々によって作成されます。


@tadmanクエリをコピーして貼り付けると機能しますが、キーボードから一重引用符を入力すると機能しません。すなわち。SELECT'Business Name 'FROM annoying_tableが機能しない
ehp 2013年

17
それは単一引用符ではないのではなくので、それはだダニあなたが通常の数字1から左にキーボードの上に見つけることができるシンボルを
peterm

5
引用符には、シングル'、ダブル"、バックワードの3種類があります`。MySQLでは、最初の2つは同等であり、同じ意味で使用できます。これは他のプラットフォームでは常に当てはまるわけではなく、特にPostgresはそれらを異なる方法で扱います。バッククォートは、データベース名または列名のエスケープにのみ使用されます。
tadman 2013年

括弧[]は私には機能しませんでした。エラーはありませんが、表示されませんでした。`一方、うまくいきました。
ジェイ

1
@Robert次に、次のように記述します:ʻannoying_table`.`BusinessName`。
エリックČerpnjak

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を使用している場合に備えて、mySQLではなくSQLServerでのみテストしました。


5
これにより、列の内容ではなく、常に文字列「ビジネス名」が選択されます。
jonasB 2015年

@JonasBもう一度確認してください。一重引用符ではなく二重引用符を使用しました。一重引用符は文字列になり、二重引用符は使用されません。
Vin.X

質問は特にMySQLに関するものであり、標準設定のMySQLサーバーでは、二重引用符と一重引用符は同等です。それは、MySQLで二重引用符を使用するだけで、悪い考えですなぜ詳細については、この答えを参照してください。stackoverflow.com/a/14123649/4172652
JonasB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.