dポイントプレゼントキャンペーン実施中!

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

A 回答 (1件)

「英字を含まない」ですよね?



select * from table_a
where
length(translate(upper(item_a), '9ABCDEFGHIJKLMNOPQRSTUVWXYZ', '9'))
= length(item_a);
    • good
    • 0
この回答へのお礼

dda167さん

回答ありがとうございます。
やりたいことができました。
大変助かりました。

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

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

お礼日時:2011/11/17 10:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!