プロが教える店舗&オフィスのセキュリティ対策術

MySQLの基礎をべんきょうしていて、文字列の検索などの際にシングルクオートを使うように教本に書いてあり、「linuxではダブルクオートは微妙に扱いが異なるので、シングルクオートを使うのがよい」とあります。
この2つにはどんな違いがあるのでしょうか。
よろしくお願いします。

質問者からの補足コメント

  • この場合はMySQLについての本なので。「MySQLのSQLの中に書くとき」ですね。

    No.2の回答に寄せられた補足コメントです。 補足日時:2019/04/13 19:46

A 回答 (3件)

> この場合はMySQLについての本なので。

「MySQLのSQLの中に書くとき」ですね。

となると
「linuxではダブルクオートは微妙に扱いが異なるので、シングルクオートを使うのがよい」
という根拠が間違ってます。
※ または、あなたの読み間違い、解釈間違いです



SQLは、そのデータベースシステム毎に違いがあるのですが、
標準的なSQLでは、 文字列は シングルクオート です。

SELECT * FROM TABLE1 WHERE COL1='ABC'
等のように、SQLの中で文字列を表わすには シングルクオートを使います。


ダブルクオートは、 列名やテーブル名等を表わすのに使います。
SELECT * FROM "TABLE1" WHERE "COL1"='ABC'
※ この例では無くてもいいですが、列名に特殊な文字を含んでいてそのまま記述できない場合、等には必須です。


ところが、MySQLの場合は、 ダブルクオートも「文字列」を表わすために使われます。
違いは、「クオートと同じ文字が含まれる場合、その文字を2個連続で書く」ということです。
 a'b という文字列なら 'a''b' または "a'b"
 a"b という文字列なら 'a"b' または "a""b"
※ シングルクオート二つ並びと、ダブルクオートがこの画面では区別が難しいと思うので、
 コピーしてエディタに貼り付ける等、等幅フォントで見てみましょう。

ただし、設定によっては、 他システム同様に、ダブルクオートは文字列ではなく名前になります。


以上の内容は、Linuxかどうかは関係ありません
「標準的なSQLに合わせるためにシングルクオートを使うようにしましょう」
なら、理屈はわかるのですが。

より詳しくは、マニュアルも読んでみましょう。
https://dev.mysql.com/doc/refman/5.6/ja/string-l …



mysql -uuser -ppassword dbname -e'SELECT * FROM TABLE1'
等とLinuxのコマンドを入力する際のクオートの話だとすると、Linuxでの使い方(正確には、このコマンドラインを受け付けているシェルの使い方)に関係しています。
通常、 ダブルクオートには「変数等を展開する」等の特殊効果があるので、そのまま書きたい場合にはシングルクオートが向いています。
ですが、その特殊効果を使いたいがためにダブルクオートにすることもあり、どちらを使うべきか、という話にはなりません。
    • good
    • 1

シングルクオートと、ダブルクオートの違いは、どこで使うかによって違います。


同じLinuxで使ったとしても、 シェルスクリプトやコマンドライン入力のときと、Python で使うときと、PHPで使うときと、Javaで使うときと、MySQLのSQLの中に書くときと、その他のいろんな場面で、意味がまったく違ってきます。

その教本の解説が何についての解説なのかがはっきりしないことには、違いも説明できません。
この回答への補足あり
    • good
    • 0

一般的にC言語を元に考えると


シングルクォートは文字
ダブルクォートは文字列

ダブルクォートの中にもう一度使いたいときはシングルクォート
    • good
    • 0

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