- ベストアンサー
Oracle 9iで英字を含まないレコードの検索
SQL初心者です。 oracle 9iの環境で「あるカラムに英字を含まないレコードを取得する」というのがあります。 私は10gを使用しているのでREGEXP_LIKE(カラム名_NO,'[A-Z]')とするつもりでした。 ところが9iはREGEXP_LIKEをサポートしていないということです。 ではどうすればできるのかというので困っています。 10gのselect文 select * from table_a where regexp_like(item_a,'[A-Z]') これを9i環境ではどのように記述すればよいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「英字を含まない」ですよね? select * from table_a where length(translate(upper(item_a), '9ABCDEFGHIJKLMNOPQRSTUVWXYZ', '9')) = length(item_a);
お礼
dda167さん 回答ありがとうございます。 やりたいことができました。 大変助かりました。 transrate()とlength()を組合わせて使うのですね。 少しわからないのは、英字を""に置き換えているみたいですが translate(upper(ORDER_NO), '9ABCDEFGHIJKLMNOPQRSTUVWXYZ', '9') の部分で英字を置き換えたいので'9'はなぜあるのかと考えました。 2番目、3番目の引数に'9’がないと値が得られないのです。 不思議です。調べてみます。 ありがとうございました。