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

データベースにORACLEを使用してVB6にて開発を行っています。

あるテーブルにIDというchar型のデータがあり、ID>='100'andID<'200'
の条件(100番台のデータを取得)にてデータを抽出したいと考えています。

ただ、IDには数値だけでなく、A01やB05などの半角アルファベットを含む
データも混在しています。

イメージとしては下記のようなSQLが発行できればと思っているのですが、
select * from テーブル名
if trim(ID) is numeric then
where ID >= '100' and ID < '200'
end if;
if trim(ID) is numeric then部分がSQL文として不正確なため動きません。

ORACLEでの開発は初心者のため、どなたかに教えていただければ幸いです。
お手数おかけしますがよろしくお願いします。

A 回答 (3件)

select * from テーブル名


where ID >= '100' and ID < '200' and replace(translate(ID,'123456789','000000000'),'0','') is null;

で検査できると思いますよ。
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。
教えていただいたSQLにて無事処理が行えました。
ありがとうございました。

お礼日時:2006/12/18 14:42

↓is not nullかと

    • good
    • 0

if trim(ID) is numeric thenをつけなくても、where ID >= '100' and ID < '200'の条件であれば、A01やB05はヒットしません。


10Aだとヒットしてしまいますが。
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございます。
そうですね。
数字以外のIDはすべて100番台以外として処理したかったのです。

お礼日時:2006/12/18 14:42

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