• ベストアンサー

ACCESSのSQLでのカンマ’認識について

教えてください。 アクセスSQLのwhere句の中で、’がもともとあるデータがあるのですが、 うまく実行できません。おそらく、終わりと認識されている?の加と思います。どうしたらいいのでしょうか? update A set 'She's not busy' where C = 'She's busy'; このような場合です。 よろしくお願いします

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

クエリのSQLビューでしたら、  Update A Set B = "She's not busy" Where C = "She's busy;" を試してみてください。 (文字列のくくりに「'」(シングルクォート)ではなく「"」(ダブルクォート)を使用) ※構文的に更新対象フィールドが必要なはずと思い、「B=」を追加しました。 VBA画面での文字列の場合(「Update~」を括るのに既に「"」使用済み)は、 SQL文全体を括る分の「"」も含めて書くと、  "Update A Set B = " & Chr(34) & "She's not busy" & Chr(34) & " Where C = " & Chr(34) & "She's busy" & Chr(34) & ";" でいけるかと思います。 (Chr関数は、引数で指定された文字コードの文字を返します:「Chr(34)」は「"」に相当)

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.2

一応回答は出ているようですが・・・ もしも貴方がSQLを解析して実行するプログラムを作成すると考えてください Accessではシングルクォートで囲まれたものを文字列とみなしますので update A set 'She's not busy' where C = 'She's busy'; の場合、命令は update 対象テーブルは A セットすべきカラムは・・・ おっと、#1回答でもご指摘されているようにカラムがありませんねぇ ここはカラムがあるものとして・・・ セットするのは'で始まっているので文字列 She' で終わりの'発見したので文字列はShe 次は s not busy' ・・・? 解析不能となるわけです。 AccessのSQLで文字列はシングルクォート、ダブルクォートのどちらを使ってもかまわないので 文字列中にシングルクォートやダブルクォートを含む場合、含まない方を使って囲むと良いです。 また、囲む文字を文字列中に含めたい場合、2個連続するものは1個の文字として判断します。 なので 'She's busy' -> 'She''s busy' こう書けば She's busy の文字列だと判断してくれます。 VBAでSQLを記述する場合は文字列として""で囲みますし AccessやSQL Serverではカラム名が特殊文字や予約語の場合 カラム名を[]囲むことになりますが、Oracleでは""を使いますので SQL上の文字列は'で囲むのが一般的です

すると、全ての回答が全文表示されます。

関連するQ&A