2017-01-16 20 views
-1

誰かが以下のコードを完成させることができますか?番号範囲の間のREGEXP_LIKE

私は100000と999999

REGEXP_LIKE(RMKADH.RMK, '[[:digit:]]') 

現在のコードの動作の間、RMKフィールド内の任意の場所に6桁の番号の範囲を探したいが、私はしようとしているので、番号で何かを復活させている

一緒に6桁に絞り込みます。私はいくつかを試みたが運がない。

編集: 6桁の数字がある場合は、このフィールドにフラグを設定します。参照は常に6桁の長さしかなく、それ以下ではありません。しかし、それはフリーテキストフィールドなので、どこにでもあって何かを含むことができます。 出力例フラグにしたい:> abc123456markj < =フラグが立てられました。 出力フラグを付けたくありません:> 23647282 <という数字は6文字以上の長さです。有効な参照ではありません。

+1

正確に一致しますか?フィールドに7100000が存在するとどうなりますか? 'LIKE'は100000と710000が存在し、どちらも指定された範囲内にあることを意味しますが、7100000自体は存在しません。 – GurV

+0

あなたの質問を編集して、サンプル入力/予想出力を追加してください。例えば。 (@ GurVで述べたように):7100000が一致するはずですか? A100000はどうですか?または 'A 1000000'?または '1000000' ? –

答えて

2

これを試してみてください:詳細情報については

REGEXP_LIKE(RMKADH.RMK, '[1-9][[:digit:]]{5}') AND length(RMKADH.RMK) = 6 

、以下を参照してください。Multilingual Regular Expression Syntax

+0

それは000000 – GurV

+0

と一致するよそれはおかげで –

+0

@マークそれは**しなかった。指定された範囲内の数字の基準を満たしません。フィールドに 'ABC000000'があった場合、結果には表示されません。 – GurV

0

あなたが与えられたフィールドのうち、6桁の数字を取得し、between

select * from t 
where to_number(regexp_substr(col,'[[:digit:]]{6}')) between 100000 and 999999; 
; 
を使用して、それを比較すること REGEXP_SUBSTRを行うことができます

6桁より大きなシーケンスが存在する場合は、上記の解決方法は最初の6桁を考慮に入れてください。 6桁の連続した数字を入力したい場合、解決策は別のものにする必要があります。

関連する問題