dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
いつも調べてはいるのですが、わからず困っております。

mysqlコマンドで-eを付けて、次のようにコマンドプロンプトでクエリを実行します。
mysql db1 -u root -p**** -e 'SELECT * FROM tb1'
すると失敗するのですが、シングルクォーテーションをダブルクォーテーションにすると実行できます。
mysql db1 -u root -p**** -e "SELECT * FROM tb1"
コマンドプロンプトでは" "にしなければいけないのでしょうか。
どなたかヒントでもけっこうですので、お教えいただけないでしょうか。
どうか、よろしくお願いいたします。

A 回答 (3件)

MySQL 4.1の日本語版マニュアルには、この辺の記述が見当たりませんでした。

MySQL 5.1の日本語版マニュアルには、この辺について記述がありました。

http://dev.mysql.com/doc/refman/5.1/ja/mysql-com …
↓(リンク先)
http://dev.mysql.com/doc/refman/5.1/ja/command-l …

「ステートメントはシングル、またはダブルの引用符で囲まれている必要があります。もしこの引用符内の値を使用したい場合には、ステートメントにダブルの引用符を使用し、シングルの引用符をステートメント内の値のうちのいづれかに使用します。」

とあり、これを見ると、「シングルクォーテーションはだめ」とは読み取れません。ただし、SQL中に文字定数を指定する場合は、「ステートメント全体はダブルクォーテーションで囲み、文字定数はシングルクォーテーションで囲む」と読めます。

-e "select * from t1 where c1 like 'abc%'"

といった使い方ですね。

ちなみに、MySQL 5.1の英語版では、「The statements must be enclosed by quotation marks. 」としか記述がありません。
    • good
    • 0
この回答へのお礼

chukenkenkouさん、恐縮です。
本当にいつもいつも、申し訳ありません。

やはりシングルでも、MySQL側は問題ある、ということではないのですよね。
ありがとうございます。感謝しております。

お礼日時:2007/10/31 00:34

コマンドプロンプトってwindowsのですよね?


windowsのcommand.comが、ブランクを含む文字列をひとつながりの引数として解釈するために、ダブルクォートが必要です。
MySQLは、そこで解釈された後の引数を受け取るので、statment外側のクォートが何であったかは関知しません。
そして、statment内の文字列指定に、シングルが使えるので、コマンドライン入力でも内部のクォートをいちいちエスケープしなくても簡単に外側と区別して記述できると言うことです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

「ブランクを含む文字列をひとつながりの引数として解釈」する
ということなのですね。
ありがとうございます。

お礼日時:2007/10/31 00:27

シングルクォーテーションではうまくいかなくて


ダブルクォーテーションではうまくいく、ということは、
コマンドプロンプトにおいては
ダブルクォーテーションを使わなければならない、
ということではないでしょうか。

MySQLでは、そういうことになっているのだと思います。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
お礼が遅れて申し訳ありませんでした。

いろいろな本をみても、たしかにコマンドプロンプトではダブルみたいですね。
そういうことなのかもしれませんね。

ありがとうございました。

お礼日時:2007/10/31 00:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!