• ベストアンサー

SQL文の中に引用符を入れたい

update DATABASE set Data1 = "ABCDEFG" where ID = 1 上のようなSQL文のデータABCDEFGの部分が、たとえば I'm a boy. とか、 You are "crazy"! のような引用符を含んだデータになると、引用符以下はデータとして認識されなくなってしまいます。 このような問題はどうやって回避すればいいのでしょうか?

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

  • ベストアンサー
noname#4564
noname#4564
回答No.1

制御文字、特殊文字は2つ重ねることで通常の文字列とおなじ解釈になります。 I''m a boy. You are ""crazy""! printf("D:\\Hello\\World!\n"); // ← ちょっと違うかも・・・?(^^;

mtkame
質問者

補足

早速の回答ありがとうございます。 説明不足がありました。実は。WEB上でフォームからデータを取り込むことを考えています。ですので、フォームから取り込んだ文字列に引用符が含まれていた場合のことをお聞きしようと思ったのですが...いずれにしても取り込んだ後で変換するなどの方法が必要のようですね。

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

その他の回答 (2)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.3

お使いのDBMSがなんなのかわからないので、曖昧ですが。 引用符を引用符として解釈させる方法が、あるはずです。 つまりI'mをI''mにすると正しく認識されるなど。 で、あとは前処理を行ってから、登録すれば良いのです。 書いてるあいだに#1の方とかぶってしまいました^^

mtkame
質問者

お礼

回答ありがとうございました。「前処理」という言葉でひらめきました。

全文を見る
すると、全ての回答が全文表示されます。
  • funamin
  • ベストアンサー率0% (0/6)
回答No.2

16進数に変換する事によって回避出来ます。 ちなみに「'」シングルコーティションなら CHR(39)で表せます。 それらを活用すればうまくいくのではないでしょうか?? (例) select CHR(39)|| 'TEST' || CHR(39) from dual; CHR(39 ------ 'TEST' 16進数の取得方法は 下記の方法で可能です。 (例) &の16進数は? select rawtohex('&') from dual; RA -- 26

mtkame
質問者

お礼

回答ありがとうございました。やはり文字列データそのものを変換をしなければならないようですね。

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

関連するQ&A

  • SQL文の改行コードについて

    text.sql ---------------------------------------- update tbl_name set text = E'「あああああ」 いいいいい うううううう' where id = 1; ---------------------------------------- というSQL文を作成し、実行後、selectにてupdateしたデータを見ると、           text ---------------------------------------- あああああ\r いいいいい\r \r うううううう ---------------------------------------- というように、「\r」が表示された状態となります。 作成したSQL文に間違いがあるのでしょうか? 使用しているDBの文字コード:UTF-8 改行コート:CR+LF になります。 よろしくお願いします。

  • JAVAに書くSQL文について教えてください

    Oracle内のデータを更新しようとしていますが ORA-00904というエラーが表示されます。 調べていると列名は「”」で囲ってはいけないと 書かれていたので、それでいろいろ試行錯誤してみたのですが エラーがなくなりません。 「SYAIN1」と「SYAIN2」は変数になっています。 このSQL文が機能するように、アドバイス頂けるとうれしいです。 int row_count = smt.executeUpdate(Update SYAIN_MASTER set SYAIN_NAME = SYAIN2 where SYAIN_ID SYAIN1);

    • ベストアンサー
    • Java
  • 1テーブル&複数レコードの更新に対して1度のupdate文での処理方法

    1テーブル&複数レコードの更新に対して1度のupdate文での処理方法 Delphi2010+SQL SERVER 2005で開発しています。 update文で、 現在下のようにwhileで複数レコードに対して、 1回、1回、sqlを発行して、更新しています。 これを、一度のSQLの発行で処理できないものでしょうか? 更新テーブルは1つで、更新する項目も同じです。 更新するデータと、where句の条件が異なります。 もし可能なようでしたら、どうかご教授お願いします。 update table set A=1,B=2 where id=1 update table set A=2,B=3 where id=5 update table set A=9,B=99 where id=7 update table set A=5,B=10 where id=15 update table set A=1,B=10 where id=75

  • VBSの中で書くSQL文の記述方法

    よろしくお願いします。 select * from db1 into id,password,date,name where db1_id = **** and db1_password = **** and db1_date = 99999999; (db1_id,db1_password,db1_dateがプライマリキー) db1という表からプライマリキーに該当したデータを取り出し、 変数に格納したいと思っています。 このSQL文をASPのVBSの中で実現する方法を教えてください。 <% Dim Conn,SQL,RS Dim id Dim password Dim date Dim name db1=server.mappath("db1.mdb") DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db1 Set Conn = Server.CreateObject("ADODB.Connection") Conn.open DBName SQL = "select * from db1" INTO = "into id,password,date,name" WHERE = "where db1_id = **** and db1_password = **** _ and db1_date = 99999999" SQL = SQL & INTO & WHERE & ";" Set RS = Server.CreateObject("ADODB.Recordset") RS.Open SQL, Conn,3,3 %> これでうまくいくかな~と思ったのですが・・・。

  • Access2007 の SQL文です。

    宜しくお願いします。 DoCmd.RunSQL ("update 予算月別 inner join 予算実績 on 予算月別.科目ID=予算実績.科目ID " _ & " set 合計金額 =sum(当年予算) where (月度>=開始日) and (月度<=終了日) group by 科目ID; ") これで 実行時エラー '3137': SQL ステートメントの最後には、セミコロン(;)が必要です。 下記のSQL文は実行できました。 これを編集したものです。 DoCmd.RunSQL ("update 予算月別 inner join 予算実績 on 予算月別.科目ID=予算実績.科目ID " _ & " set 金額01 =当年予算 where 月度=開始日 ; ")

  • SQLで取得したフィールドをSQL文として利用

    お世話になっております。 MYSQLで sql_id (int PK) sql_data (text) のようなテーブル(sql_db)を持ち select sql_id from where (sql_data をsqlとして実行した結果 ) > 200 のように、フィールドから取得した値をSQLとして実行したりする方法はございますでしょうか。 ご教授よろしくお願いいたします。

  • SQL文のゼロ除算

    下記のSQL文でBがゼロのときエラーになります。 UPDATE TABLEa SET A = B / C 上記でエラーが出ないような(ゼロ除算エラー を回避できる)SQL文にする方法を知ってますか?

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

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

  • 複数のUPDATE文の実行

    EXCELでUPDATE文を1000行ほど作成して、MySQL QueryBrowser のSQL QueryAreaに貼り付けて一気にUPDATEしたいのですが可能でしょうか? 現在 UPDATE prod Set p_id=239 Where prod_id = 34421; UPDATE prod Set p_id=139 Where prod_id = 34425; UPDATE prod Set p_id=15 Where prod_id = 34428; (と以上の様な内容が1000行ほどあります。) 貼り付けて、1行づつ選択して、Execute ボタンをクリックして実行しています。 初心者の質問かと思いますがどうぞご教授ください。

  • フィールドに同じ値を入れるSQL文は?

    フィールドに同じ値を入れて リセットのような感じにしたいのですが、 下記のように、書くとupdateで来ますが、 id番号が飛んでいる時や、多量にある時などは、 どうすれば、よいのでしょうか? よろしくお願いいたします。 update list set finish = '' where id in ('1', '2', '3');

    • ベストアンサー
    • MySQL
このQ&Aのポイント
  • ミシンCPF30シリーズの回転時に異音が発生しています。手で回すと、針が上がったり下がったりする際にギギギと音がするため、故障しているのか、油が足りていないのか迷っています。
  • 回転時にギギギという異音が発生しているミシンCPF30シリーズについて相談です。手で回すと、針が上がるときと下がるときに音が発生します。掃除をしても変化がないため、故障の可能性もあるのか疑問です。
  • ミシンCPF30シリーズを使用している際に、回転時の異音に悩んでいます。手で回すと、針が上がるときと下がるときにギギギという音がします。掃除も行いましたが、改善されないため、故障の可能性も考えられます。
回答を見る