- ベストアンサー
シングルクォーテーションを含む文字列の更新
題名のとおりなのですが、データベースに更新するデータに シングルクォーテーションを含む文字があって、更新時にエラーとなってしまいます。 更新する文字列内にシングルクォーテーションの数が奇数あれば、さらに文字列にシングルクォーテーションを追加して、更新しようとしたんですが、ダメでした。 何か参考になるサイト、解決策をご存知の方、宜しくお願いします。 環境: OS:WinXPSP2 言語:VB6SP6 DB:SQLServer2000
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シングルクオテーションはエスケープしないとダメですよ。 「'」は「''」と2つ続けます。
その他の回答 (2)
- tkrn
- ベストアンサー率53% (33/62)
エラーがでるのは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のクエリーマネージャ(でしたっけ?)で発行してエラ-になるか確認されてみてはどうでしょうか?
お礼
すみません。シングルクォーテーションを2つ続けた状態にして更新する事を知りませんでした。無事、解決しました。いろいろ考えて頂き、ありがとうございました。
- tkrn
- ベストアンサー率53% (33/62)
文字数がオーバーフローしているだけでは? 代入しようとしている項目の最大桁数を確認されてはどうでしょうか?
補足
文字数オーバーによるエラーではないです。 すみません。エラー内容を記載しておいたほうが良かったですね。 例えば、「A'B」をデータベースに更新しようとしてみた時のエラーは、「'B'の近くに無効な構文があります。」と出ます。 更新方法としては、ADOでコネクションのExecuteメソッドにSQL文を設定して更新しています。
お礼
シングルクォーテーションを含む文字列を更新する時は、シングルクォーテーションを2つ続けた状態にして更新するとは、知りませんでした。無事に更新できました。勉強になりました。ありがとうございます。