• ベストアンサー

シングルクォーテーションとダブルクォーテーション

いつも楽しく拝見させて頂いています。 初心者ですが宜しくお願いします。 シングルクォーテーションとダブルクォーテーションの使用方法について質問させて頂きます。 select文でテーブル名を指定するときはそのまま(たとえば'名前'じゃなく名前)しないとエラーになります。そういう風なシングルクォーテーション(又はダブルクォーテーション)を使ってはいけないところ、またシングルクォーテーションにしないといけないところ、ダブルクォーテーションにしないといけないところを教えて頂けますでしょうか?もし両方OKならその違い等も教えていただけるとうれしいです。 以上宜しくお願いします。

  • MySQL
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

文字定数は、「'」で囲む必要があります。 例)SELECT 'ABC' →文字定数の'ABC'と解釈される SELECT ABC →ABCは、表名や列名と解釈される 数値定数は、多くのRDBMSでは「'」で囲みませんが、MySQLでは独自仕様として囲むことが可能です。 例)SELECT 123 →数値定数の123 SELECT '123' →一般的なRDBMSでは文字として扱われる。MySQLでは数値としても扱える 殆どのRDBMSには予約語があり、RDBMSでは予約語を頼りに構文解析します。表名や列名に英単語やその組み合わせを使おうとすると、予約語とぶつかってしまうことがあります。 例)SELECT FROM FROM →予約語のSELECT FROMの間に「*」や列名が指定されておらず、RDBMSは構文誤りと認識する それを回避するために、標準SQLでは「"」で表名や列名を囲みます。MySQLでは、文字コードにANSIを使う場合は、「"」で、それ以外には独自仕様で「`」(バッククォーテーション)を使います。 例)SELECT "FROM " FROM →多くのRDBMSでは「"」で囲むことで、RDBMSに最初の「FROM」は、列などの名前であることを知らせる SELECT `FROM` FROM →ANSI以外のMySQLでは、「`」(バッククォーテション)で囲む また、「-」(ハイフォン)を表名や列名に使う場合、「"」で囲まないと、SQLでは減算と解釈されます。このように、「"」で囲むことで、記号なども名前に使用することができます。 例)SELECT ABC-DEF →列ABCと列DEFの減算と解釈される   SELECT "ABC-DEF" →列「ABC-DEF」と解釈される   SELECT `ABC-DEF' →ANSI以外のMySQLでは、「"」でなく「`」(バッククォーテション)を使用

pgBeginImo
質問者

お礼

文字コードでバッククォーテーションを使ったりダブルクォーテーションを使うことがあるんですね。ありがとうございました。とても参考になりました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

テーブル名やフィールド名はバッククォーテーション「`」です。 値や文字列はシングルクォーテーションを使うのが一般的です。 シングルクォーテーションはダブルクォーテーションと同等ですが、 SQLは多くのプログラミング言語と連携してつかうケースが多く、 例えばPHPで書く場合 $sql="SELECT * FROM `hoge` WHERE `fuga`='$piyo'"; とするときれいにかけますが $sql='SELECT * FROM `hoge` WHERE `fuga`="$piyo"'; としても$piyoは変数として処理されません。 これは多くのプログラム言語でシングルクォーテーションで括った 場合は変数を展開しないという決まりがあるからです。 したがってSQLではシングルクォーテーションを括り文字として 使った方がスマートです。

関連するQ&A

  • シングルクォーテーションとダブルクォーテーションについて

    今、AccessVBAを本を見ながら勉強している初心者です。 フォームから入力されたコードに検索をしたいのですが、 Dim cnCrrDB As ADODB.Connection Dim rsKokyaku As New ADODB.Recordset ・ ・ ・ rsKokyaku.Open "Select * From 顧客マスタ Where _ 顧客コード='" & txtKokyakuCode & "'", _ cnCrrDB, adOpenStatic, adLockOptimistic とあり、[顧客マスタ]テーブルから一致する顧客コードを検索したい。っということは わかるのですが、 顧客コード='" & txtKokyakuCode & "'", のあたりの意味が、、、不明 ちなみにtxtKokyakuCodeというのは  コードを入力するための テキストボックスの名前です。 シングルクォーテーションとダブルクォーテーションを どうゆうふうに扱っているのか 教えてくださーい。 お願いします!!(わかりづらくてすみません)

  • ダブルコーテーションやシングルコーテーション

    私の持っている参考書の中に、次のように、 変数をダブルコーテーション、シングルコーテーション、およびピリオドで囲んでいるSQL文があるのですが、 この場合、なぜ、ダブルコーテーション、またはシングルコーテーションのみでは駄目なのでしょうか? [参考書の記載] where カラム名>="'.変数.'" ※変数は日付が入ります。varchar型です。

    • ベストアンサー
    • MySQL
  • ダブルクォーテーションとシングルクォーテーションの使い道

    文字を表示させる際、その文字をダブルクォーテーションで囲みますよね。 では、シングルクォーテーションはどういうときに使うんでしょうか。 この使い方の違いについて分かる方がいましたら、教えてもらえると大変有り難いのですが。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Java
  • ダブルクオーテーション、シングルクオーテーション

    プログラミング 「"」  と 「'」 の違いについて プログラミングにおいてダブルクオーテーションとシングルクオーテーションは双方、「コンピュータに文字列と認識させる」記号だと思うのですが、プログラミング言語問わず " と ' に文字列を表す以外の特別な意味を持つケースは何かありますか? (文字列を表す以外の意味はありますか?)

    • ベストアンサー
    • Java
  • '(シングルクォーテーション)の検索

    '(シングルクォーテーション)の検索 SQL Server 2005 Express Edition を使っています。 '(シングルクォーテーション)を含む文字列を検索したいのですが できずに困っています。 どのようなクエリを組むべきでしょうか? 教えてください。 よろしくお願いします。 現在は select * from テーブル名 where 列名 like '%\'%' としていますがエラーになります。

  • ダブルクオーテーション

    echo文で echo"文字<br/><a href="#">戻る</a>"; とありますが echoのダブルクオーテーションの中にさらにダブルクオーテーションを 使う("#")とエラーが出てしまいます。 こういった場合どうすれば良いでしょうか。 わかる方、すみませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • ダブルクォーテーションが置換できません

    いつもお世話になっております。 PHP初心者です。 シングルクォーテーションとダブルクォーテーションを文字列として入力したいと思い、以下のように記述しました。 -------------------------------------------------- $naiyo = $_POST['naiyo']; $search = array('\'','"'); $replace = array('\'\'','\"'); $naiyo2 = str_replace($search,$replace,$naiyo); -------------------------------------------------- シングルクォーテーションは置換された(文字列として表示された)のですが、ダブルクォーテーションは表示されず、ダブルクォーテーション以下の文字列が消えてしまいます。 置換ができていないというよりも、そもそもダブルクォーテーションが検索に引っかかってもいないようです。 どのようにすればダブルクォーテーションも置換できるか、お分かりの方がいらっしゃいましたらご教示ください。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • Oracleのシングルクォーテーション

    いつもお世話になっております。 Oracleの「'(シングルクォーテーション)」の使い方について教えてください。 テーブルAのフィールド001には2桁の数値が文字列型として格納されています。 (1)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = '09' でデータの抽出をしているのですが、データがあるにも係らず、「0」となってしまいます。 (2)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = 09 では、「09」だけでなく「9」までカウントしてしまいます。 データの中には「09」「9」が混在していて、これらを別々にカウントしたいのですが、(1)では結果を得ることが出来ません。シングルクォーテーションの使い方に間違いがあるのでしょうか? 別々にカウントする方法があればご教授いただけないでしょうか? よろしくお願いします。

  • シングルクォーテーションの変換

    VB6からOracle9iのテーブルにシングルクォーテーション(半角)を含む文字列を登録する場合に、よく行われる変換方法は何がありますでしょうか? (1)シングルクォーテーションを取り除く (2)全角文字に置き換える (3)SQL文を変換しDBに登録できるようにする (3)の場合、使用される関数が載っているホームページがありましたらご教授のほどよろしくお願い致します。

  • VBAのSQL文内での"(ダブルコーテーション)の扱いについて。

    Access97のVBAでSQL文を書きたいと思います。 テーブルに[姓]、[名]という2フィールドがあり、これをSQL内で[姓 名]と一つにしたいと思います。姓と名と間にスペースを入れます。 QBE グリッドに 姓名: [名簿]![姓] & " " & [名簿]![名] と書くと SELECT [姓] & " " & [名] AS [姓 名] FROM 名簿と SQL文が作成されたため そのまま VBAに貼り付けてみたのですが、 " (ダブルコーテーション)扱いがまずいかエラーになります。 SQL文での中での " (ダブルコーテーション)の扱いはどのようにすればいいのでしょうか?