値がアルファであるか数値であるかをテストするSQL関数を探していました。Informix 7.3にはこのような機能はないようですが、何かを見逃したか、間違ったものを探していた可能性があります。
たとえば、電話番号フィールドに番号のみが含まれていることをテストし、それに応じて処理しようとしています。
電話フィールドタイプがchar(12)
次のようなこのテーブルがあるとします。
id name phone
5164 Cheese 973-153-5149
8843 Queso (201)8011830
8356 Formaggio 2129182943
8938 Ost ext.21438
3852 Ser 973-15-1549
私はこのようなことをしたい:
SELECT CASE WHEN (ISALPHA((TRIM(REPLACE((REPLACE((REPLACE((REPLACE((REPLACE(phone,'-','')),'(','')),')','')),' ','')),'.','')))))
THEN 'has alpha chars'
WHEN (LENGTH((TRIM(REPLACE((REPLACE((REPLACE((REPLACE((REPLACE(phone,'-','')),'(','')),')','')),' ','')),'.','')))) NOT IN (10,11))
THEN 'wrong length'
WHEN (phone IN ('',' ',NULL)))
THEN 'phone is blank'
ELSE (TRIM(REPLACE((REPLACE((REPLACE((REPLACE((REPLACE(phone,'-','')),'(','')),')','')),' ','')),'.','')))
END phone
FROM given_table;
基本的に、私は電話番号から、、、、、文字を削除し、その結果をトリミングし、10文字または11文字の長さであるかどうかをテストし、すべての後にデータにアルファ文字がないことを確認しようとしてい-
ます。交換してトリミングします。(私が交換とトリミングを行う方法に何か問題があると感じた場合は、その側面についても提案を受け付けています。正規表現?)(
)
.
私が望む最終結果は次のようになります。
phone
9731535149
2018011830
2129182943
has alpha chars
wrong length
、、の組み合わせを使用することを提案しているが、Informix 7.3ではサポートされていない1つのソリューション(Oracle )を読みました。LENGTH
TRIM
TRANSLATE
TRANSLATE
*注意-存在しない場合は独自の関数を作成しますので、回答として提案しないでください。これを行うための組み込みの方法があるかどうかを知りたいだけです。
ジョナサン・レフラーが救助に?