• ベストアンサー

シングルクォーテーションを含む文字列の更新

題名のとおりなのですが、データベースに更新するデータに シングルクォーテーションを含む文字があって、更新時にエラーとなってしまいます。 更新する文字列内にシングルクォーテーションの数が奇数あれば、さらに文字列にシングルクォーテーションを追加して、更新しようとしたんですが、ダメでした。 何か参考になるサイト、解決策をご存知の方、宜しくお願いします。 環境: OS:WinXPSP2 言語:VB6SP6 DB:SQLServer2000

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

シングルクオテーションはエスケープしないとダメですよ。 「'」は「''」と2つ続けます。

kamohura_01
質問者

お礼

シングルクォーテーションを含む文字列を更新する時は、シングルクォーテーションを2つ続けた状態にして更新するとは、知りませんでした。無事に更新できました。勉強になりました。ありがとうございます。

その他の回答 (2)

  • tkrn
  • ベストアンサー率53% (33/62)
回答No.3

エラーがでるのはUPDATE命令ですか?それともINSERT命令ですか? まず、テーブル「TBL」項目「VALUE」に「A'B」を入れると仮定して UPDATE TBL SET VALUE = 'A''B' にしてもエラーになるということですよね? 逆にデータの「'」文字を外した場合でもエラーになりませんか? エラーの内容からすると単純な文法ミスだと思われるのですが… よくやるミスとしては、 1).一番最後の項目なのにもかかわらず「,」をつけてしまっている。 UPDATE TBL SET ~ , VALUE = 'A''B', WHERE~ ~~~ 2).一番最後の項目がWHEREとくっついている。 UPDATE TBL SET ~ , VALUE = 'A''B'WHERE~ ~~~ 3).全角空白が混入している。 UPDATE TBL SET ~ , VALUE = 'A''B' WHERE~ ~~~ 当てはまりませんか? Executeメソッドにブレークポイントし生成されたSQL文の変数を直接SQLServerのクエリーマネージャ(でしたっけ?)で発行してエラ-になるか確認されてみてはどうでしょうか?

kamohura_01
質問者

お礼

すみません。シングルクォーテーションを2つ続けた状態にして更新する事を知りませんでした。無事、解決しました。いろいろ考えて頂き、ありがとうございました。

  • tkrn
  • ベストアンサー率53% (33/62)
回答No.1

文字数がオーバーフローしているだけでは? 代入しようとしている項目の最大桁数を確認されてはどうでしょうか?

kamohura_01
質問者

補足

文字数オーバーによるエラーではないです。 すみません。エラー内容を記載しておいたほうが良かったですね。 例えば、「A'B」をデータベースに更新しようとしてみた時のエラーは、「'B'の近くに無効な構文があります。」と出ます。 更新方法としては、ADOでコネクションのExecuteメソッドにSQL文を設定して更新しています。

関連するQ&A

  • 半角シングルコーテーションを文字列として扱う方法

    VB6にて、シングルコーテーションを文字列として使用したいのですが、良い方法はないでしょうか。 例:マンション名等で   ○○○k's A棟        ↑   でシングルコーテーションを半角で使用したい。

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

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

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

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

    • ベストアンサー
    • Java
  • 正規表現でシングルクォーテーションで囲まれた文字列

    VB.NET で開発を行っています。 シングルクォーテーションで囲まれた文字列の検索を行いたいのですが正規表現の記述が良くわからないので困っています。 たとえば 'AAA' + 'BBB' + 'CCC' 上記のの文字列から「'AAA'」「'BBB'」「'CCC'」も検索したいのですが,パターンとして「'.*'」を用いると「'AAA' + 'BBB' + 'CCC'」が返ってきます。 どなたかご教授ください。よろしくお願いします。

  • ダブルクォーテーションを文字列として扱いたい

     初心者な質問で申し訳ありませんが、ダブルクォーテーション("")を  文字列として扱いたいのですが、どうもうまくいきません。  SQLなどだと、escapeって関数がありますよね?  VBにはそれに似たような関数はあるのでしょうか??

  • '(シングルクォーテーション)の検索

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

  • 正規表現でシングルクォーテーション内の文字列を取る

    正規表現でどうしても分からない状態です。よろしくお願いします。 PHP5.2で、 'You\'re pen' というシングルクォーテーションで囲まれた文字列を 正規表現で取得しようとしています。 preg_match_all("/\'([^\']*|\\\')*?\'/", $src, $matches); のようにしていますが、どうしても 'You\' までしか取れません。 どうしたら取れるでしょうか。。m(_ _)m

  • c言語の文字、また文字列について

    c言語の文字、つまり「'(シングルクオーテーション)」で囲んだ単数の半角文字は、メモリに保存されているのでしょうか。 また、アドレスは有るのでしょうか。 c言語の文字列、つまり「"(ダブルクオーテーション)」で囲んだ複数の文字は、メモリに保存されているのでしょうか。 また、アドレスは有るのでしょうか。

  • エクセルにて文字列データ先頭の「'」シングルクォーテーションを非表示にする

    よろしくお願いします。 EXCEL形式にアウトプットしデータを作成しました。 そのなかに文字列と認識させたい数字フィールドがあり先頭に「'」シングルクォーテーションを付けています。 すると対象のセル上に、シングルクォーテーションが表示されておりました。 セルをアクティブにし、編集状態でEnterを押下することにより、表示になりました。 なにもせずに「シングルクォーテーション」がセルには非表示、数式バーには表示される状態にするには、どうしたらよいでしょうか。 よろしくお願いします。

  • シングルクォーテーションから後が消える!!

    PHP初心者です。 [php2.php]から[php1.php]のフォームの内容を読み取るとき、そのフォームのテキスト文字列の中にシングルクォーテーションが入っているとその後から文字が消えてしまいます。 ダブルコーテーションではうまくいくのですが。 解決方法をぜひご伝授ください。

    • ベストアンサー
    • PHP