- - PR -
CLOB型に対するSQL条件
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-10-14 14:09
初歩的な質問ですが、よろしくお願いいたします。
あるテーブル「AAA」にCLOB型の列があります。 仮に「CMT」という列名とします。 このCMTに対して完全一致検索したいのですが、 SELECT count(*) FROM AAA WHERE CMT = [条件文字列] だとエラーになるので、 1: SELECT count(*) FROM AAA 2: WHERE DBMS_LOB.INSTR(CMT,[条件文字列],1,1) = 1 3: AND DBMS_LOB.GETLENGTH(CMT) = LENGTH([条件文字列]); (3は保険のようなものでしょうか?) としました。これだとOKなのですが、 [条件文字列]がvarchar(2)の限界値(4000byte?)を超えるとエラーになります。 通常ではありえないかもしれませんが、 CLOB列に対して完全一致検索する方法はありますでしょうか? 記載内容が乏しければスイマセン。。。。 |
|
投稿日時: 2008-10-14 14:47
DBはOracleでしょうか?
to_clob()関数を使えばいいのでは。 しかし、clobを完全一致とは。 |
|
投稿日時: 2008-10-14 15:00
ご返答ありがとうございます。
>しかし、clobを完全一致とは。 はい。。。ごもっともです。。。 >DBはOracleでしょうか? 言葉足らずでした。そうですOracle10gです。 C#からこのSQLを実行しようとしています。 >to_clob()関数を使えばいいのでは。 この使用方法について教えてください。 C#でSQL文字列を作成し、実行しようと思っています。 [CMT]がCLOB型です。 1: SELECT count(*) FROM AAA 2: WHERE CMT = TO_CLOB([条件文字列]) を実行したのですがSQLエラーとなりました。 他のページを見ると、 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24654&forum=7&5 パラメータ渡しで更新をされている方がいらっしゃるので、 同様にSQLの条件もパラメータ渡しであれば可能かなと思っております。 が、可能であればSQL文字列で実現したいと考えております。 よろしくお願いいたします。 |
|
投稿日時: 2008-10-14 15:06
to_clov()はOracleの関数なのでOracleのSQLリファレンスを参照してください。
C#での記述はよくわかりません。 パラメタで指定もできるはずです。 SQLエラーの詳細は? |
|
投稿日時: 2008-10-14 15:29
たびたび恐れ入ります。
リファレンスやネットを参照しましたが、まだまだ探しきれていない状態です。 が、「DBMS_LOB.INSTR(CMT, [条件文字列], 1, 1)=1」を使用する記述ばかりです。 以下、SQLPlusで実行しました。 1: SELECT count(*) FROM AAA 2: WHERE CMT = TO_CLOB([条件文字列]) ・[条件文字列]の長さが短いとエラーにはなりません。 ⇒OK ・[条件文字列]の長さが長い(4000byte以上?)になると、 ⇒ORA-01704 文字列リテラルが長すぎます。 1: SELECT count(*) FROM AAA 2: WHERE DBMS_LOB.INSTR(CMT, [条件文字列], 1, 1) = 1 ・[条件文字列]の長さが短いとエラーにはなりません。 ⇒OK ・[条件文字列]の長さが長い(4000byte以上?)になると、 ⇒ORA-01704 文字列リテラルが長すぎます。 よろしくお願いします。 |
|
投稿日時: 2008-10-14 15:46
TO_CLOB で検索したところ、これが見つかりましたが、参照されてますか?
http://www.shift-the-oracle.com/oerrs/ora-01704.html 「TO_CLOB 関数が使用できるのは Oracle 9i 以降」とあって、バージョンが書かれていなかったのでちょっと心配でしたが、使えているようなので大丈夫みたいですね。 # 本当は「初心者」という名前の場合は回答しないつもり _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 |
|
投稿日時: 2008-10-14 16:06
deanna様、ぽぴ王子、ご返答ありがとうございました。
>TO_CLOB で検索したところ、これが見つかりましたが、参照されてますか? されていませんでした。勉強になりました。 SQL単一では実装せずにパラメータを使用して実施したいと思います。 ありがとうございました! 初心者脱出できるようがんばります。 |
|
投稿日時: 2008-10-14 17:09
完全一致で探したいというなら、格納時にデータのハッシュを一緒に格納しておいて、そいつで比較した方がいい気がする。
_________________ かるあ のメモ と スニペット |