- PR -

CHARの比較

1
投稿者投稿内容
パピコ
会議室デビュー日: 2003/06/19
投稿数: 4
投稿日時: 2004-10-13 19:36
現在DB2からORACLEへの移行を兼ねたプログラムの修正を行っています。
そこでCHARのカラムの比較において以下のような問題が発生しました。

IDと言うCHARのカラムの比較で

ID < '     '
(5桁の半角スペース)

のようにスペースの比較をしていますが、ORACLEで実行すると同様の結果が得られません。
そこでDB2の ' ' と ORACLEでの ' ' では値が違い結果が変わるのではないかと思い調べてみましたが、
思うような回答を見つけることが出来ませんでした。

ORACLEでの動作では
ID < 'ZZZZZ'
と比較すると、同じようなデータを取得する事が出来ました。
(同じでしたが、どのケースにおいても同じと言う保証はありません。)

どなたか、CHARの比較においてのスペースの扱いの違いに関してご存知の方が
おりましたら、ご教授宜しく御願いします。


[ メッセージ編集済み 編集者: パピコ 編集日時 2004-10-13 19:37 ]

[ メッセージ編集済み 編集者: パピコ 編集日時 2004-10-13 19:37 ]
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-10-14 07:35
Oracleでは空文字列はNULLになるので、
1. ID に '     ' を格納
2. ID を取得
=> CHAR なので末尾の空白が除去
=> 空文字列となる
=> NULL となる
=> 比較は失敗
となっていることはありませんか?

[ メッセージ編集済み 編集者: にしざき 編集日時 2004-10-14 07:36 ]
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2004-10-14 09:28
パピコさんとはまったく逆で Oracle -> DB2 への移植を題材にしたページがありました。移植方向が逆でも、お互いの差異についての話が中心になるので参考になるかもしれません。空文字列 と null のお話も出ています。

http://www.db2.jp/online/apl/apl05.html
パピコ
会議室デビュー日: 2003/06/19
投稿数: 4
投稿日時: 2004-10-14 11:01
にしざきさん、未記入さん返答ありがとうございました。

>http://www.db2.jp/online/apl/apl05.html
のサイトのように空文字の問題も確認していてそちらを対応しても
条件が一致しませんでした。

にしざきさんの返答のように条件のデータがNULLとして扱われている可能性が
あるようなのでそちらを調べていきたいと思います。

現在もう一つ原因の可能性がとしては、
汎用機からの移行の為スペースの値がオープン系とは違うのではとも考えています。

返答ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)