• ベストアンサー

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環境ではどのように記述すればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • dda167
  • ベストアンサー率76% (55/72)
回答No.1

「英字を含まない」ですよね? select * from table_a where length(translate(upper(item_a), '9ABCDEFGHIJKLMNOPQRSTUVWXYZ', '9')) = length(item_a);

ikebukuro2011
質問者

お礼

dda167さん 回答ありがとうございます。 やりたいことができました。 大変助かりました。 transrate()とlength()を組合わせて使うのですね。 少しわからないのは、英字を""に置き換えているみたいですが translate(upper(ORDER_NO), '9ABCDEFGHIJKLMNOPQRSTUVWXYZ', '9') の部分で英字を置き換えたいので'9'はなぜあるのかと考えました。 2番目、3番目の引数に'9’がないと値が得られないのです。 不思議です。調べてみます。 ありがとうございました。

関連するQ&A