SQL文でダブルクォートを文字列として扱うには?

解決


たすけて〜  2007-09-28 01:50:43  No: 27877

INSERT INTO aaa ( KEY1 , KEY2 , COMMENT ) 
VALUES ( '001' , '00002' , ' ":test ' )

上記のSQLを実行すると「:testパラメータが設定してない」的な
エラーになるのですが、ダブルクォート以降の:に反応してパラメータ扱い
している様です「 ":test 」自体を文字列として扱いたいのです
(※ParamCheck=Falseすれば問題ないのですがTrueでなければ困るのです)
ちなみにSQLは実行できます(SQL+等で)


あいうえお  2007-09-28 03:16:39  No: 27878

DB書いてないから、適当に答えるよ

' ":test ' 

CHR(32) || CHR(34) || CHR(58) || 'test '


たすけて〜  2007-09-28 03:57:20  No: 27879

回答、ありがとうございます

試してみましたが、結果は同じでした
CHR(32)、CHR(34)、CHR(58)、は変換されたSQLができていましたが
ダブルクォートとコロンの組み合わせのSQLだとエラーのようです


GTR  2007-09-28 05:20:07  No: 27880

TQueryコンポーネントにSQLを設定します。
Query1とした場合
SQL分を設定
INSERT INTO aaa ( KEY1 , KEY2 , COMMENT ) 
VALUES ( '001' , '00002' , :test)

実行時に:testに値を設定
Query1.ParamByName('test').AsString := '":test';
SQL実行
Query1.ExecSql;
これで登録されるはずです。


たすけて〜  2007-09-28 05:27:36  No: 27881

回答、ありがとうございます

すいません、自分の質問の仕方が悪かったです
パラメータtestを使用したいのではなく
COMMENTというChraの項目に「 ": 」という文字列を登録したいのです


たすけて〜  2007-09-28 05:51:33  No: 27882

GTRさん、
ごめんなさい、できました!
ありがとうございます

いってるいみがさいしょ理解できませんでした、すいません


あいうえお  2007-09-28 17:56:31  No: 27883

解決したようだけど、CHR は、Delphiの関数じゃなくて、DB・・・というかOracleの関数な。

そういう意味で「CHR(32) + CHR(34)」ではなく「CHR(32) || CHR(34)」のように書いたんだな。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加