お世話になっております。 A.中村です。 On Tue, 9 Nov 1999 02:31:15 +0900 Yoshida Masato <yoshidam / yoshidam.net> wrote: >bindrv メソッドでプログラム変数の型を VARCHAR2 にしているせ >いかもしれません。 >CHAR 同士の比較では brank-padded comparison が行われて, >VARCHAR2 と CHAR では non-brank-padded comparison が行われる >ようです。 >文字列リテラルは CHAR 扱いのようなので brank-padded >comparison が行われるのでしょう。 パッチかましてみました。 「期待した」とおりに動くようになりました。 ところでこれ、逆にDBデータのほうがVARCHAR2型だった場合 もしかして今回と同様(というか逆)な事態が起きたり するのかなと、新たな心配が。 VARCHAR2同士の比較がVARCHAR2-CHAR比較と同じく non-brank-padded comparisonで行われるならば 問題はないんですが。 えーとえーとORACLEのヘルプでは…あ。 >Oracleは、比較される値のどちらか、あるいは両方がデータ型 >VARCHAR2を持っている場合、必ず非空白埋め比較を使用します。 という記述が見つかりました。 ってことは、比較の片方であるbind変数をCHAR型にしとけば 上記の心配は、しなくてもいいってことですね。 よだん: 二つのTYPEを、単なる独立な二つとしてではなくて 両者に「共通な性質」と「異なる性質」とに 再整理して(横のものを縦にするとでもいうか)考える ことが出来るという意味で、 classっていう考え方は、似て非なるモノを 混乱なく扱うための手段として非常に有り難いですね。