- ベストアンサー
Oracle8での数値チェック
現在、Oracle8.1.7で開発しております。 検索する条件として、『数値かどうか』または『文字列かどうか』 という判断を行いたいのですが可能でしょうか? やりたい事は、以下のデータの右から2桁目が数値となっているものと 文字列になっているものとを区別したいのです。 ○○○○-A01 ○○○○-C99 ○○○○-AB1 ○○○○-Z21 : 設計上、すべてのフィールドは『VARCHAR2』となっています。 よろしくお願いしますm(_ _)m
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
substring : 部分文字列の抽出 length : 文字長 を使えばできるのでは・・・ 例えば where substring(length( フィールド名 ) - 2, 1) >= '0' and substring(length( フィールド名 ) - 2, 1) <= '9' なんて感じで。
その他の回答 (1)
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 数値かどうかの確認方法ですが、数値だと仮定してNUMBER 型変数に 代入を行い、例外が発生するかどうかで確認する方法もあります。 Number型変数 := to_number(substr(フィールド名, -2, 1), 'FM9'); とすれば、'0' ~ '9' 以外の値が入っていた時は、例外が発生します。 #1 の方のように、length 関数を使用してもOk ですが、substr 関数の 第2パラメータにマイナスの値を指定すると、文字列の終わりから文字を 切り出してくれます。
お礼
文字列の分と数値の分を別々にして並べたかったので、 抽出してからでは遅かったのです。 説明不足で申し訳ありませんm(_ _)m でも勉強になりました。 ありがとうございました。
お礼
ありがとうございます! SUBSTR(KATA,10,1) BETWEEN '0' AND '9' SUBSTR(KATA,10,1) BETWEEN 'A' AND 'Z' で解決できました! ついつい数値かどうかチェックできる関数を探してしまい…(苦笑 勉強になりました。 ありがとうございました。