アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、Oracle8.1.7で開発しております。

検索する条件として、『数値かどうか』または『文字列かどうか』
という判断を行いたいのですが可能でしょうか?
やりたい事は、以下のデータの右から2桁目が数値となっているものと
文字列になっているものとを区別したいのです。

 ○○○○-A01
 ○○○○-C99
 ○○○○-AB1
 ○○○○-Z21
    :

設計上、すべてのフィールドは『VARCHAR2』となっています。
よろしくお願いしますm(_ _)m

A 回答 (2件)

substring : 部分文字列の抽出


length : 文字長

を使えばできるのでは・・・
例えば

where
substring(length( フィールド名 ) - 2, 1) >= '0'
and
substring(length( フィールド名 ) - 2, 1) <= '9'

なんて感じで。
    • good
    • 0
この回答へのお礼

ありがとうございます!
SUBSTR(KATA,10,1) BETWEEN '0' AND '9'
SUBSTR(KATA,10,1) BETWEEN 'A' AND 'Z'
で解決できました!

ついつい数値かどうかチェックできる関数を探してしまい…(苦笑
勉強になりました。
ありがとうございました。

お礼日時:2002/12/16 13:08

こんにちわ。



数値かどうかの確認方法ですが、数値だと仮定してNUMBER 型変数に
代入を行い、例外が発生するかどうかで確認する方法もあります。

Number型変数 := to_number(substr(フィールド名, -2, 1), 'FM9');
とすれば、'0' ~ '9' 以外の値が入っていた時は、例外が発生します。

#1 の方のように、length 関数を使用してもOk ですが、substr 関数の
第2パラメータにマイナスの値を指定すると、文字列の終わりから文字を
切り出してくれます。
    • good
    • 0
この回答へのお礼

文字列の分と数値の分を別々にして並べたかったので、
抽出してからでは遅かったのです。
説明不足で申し訳ありませんm(_ _)m

でも勉強になりました。
ありがとうございました。

お礼日時:2002/12/16 13:12

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

関連するカテゴリからQ&Aを探す