- maurois
- 会議室デビュー日: 2004/03/06
- 投稿数: 13
|
投稿日時: 2006-10-01 01:06
oracle9iで電話番号のフォーマットチェック(999-999-xxxxになっているか)
を行う関数をpl/sqlで作成したいのですが、簡単に作成できる方法はあるのでしょうか。
oracle10gは正規表現が使用できるので簡単に作成できるのですが。
|
- 温州蜜柑
- ベテラン
- 会議室デビュー日: 2005/01/24
- 投稿数: 65
- お住まい・勤務地: 東京都
|
投稿日時: 2006-10-02 01:13
引用: |
|
mauroisさんの書き込み (2006-10-01 01:06) より:
oracle9iで電話番号のフォーマットチェック(999-999-xxxxになっているか)
を行う関数をpl/sqlで作成したいのですが、簡単に作成できる方法はあるのでしょうか。
oracle10gは正規表現が使用できるので簡単に作成できるのですが。
|
こんばんは。
下記のようなクエリをPL/SQLに仕込めば実現できませんか?
「簡単に作成...」=「2行ぐらいのクエリ」
を意味しているとNGでしょうけど。
コード: |
|
with
mydual as (
select
'123-456-7890' as target, -- ここに引数を渡してください
'000-000-0000' as format -- ここに引数を渡してください
from
dual
)
select
case when
length( mydual.target ) = length( mydual.format ) and
translate( mydual.target, '0123456789', '0000000000') = mydual.format
then
'OK'
else
'NG'
end
from
mydual;
|
|
- ぷさいくろう
- ぬし
- 会議室デビュー日: 2006/08/30
- 投稿数: 1034
|
投稿日時: 2006-10-02 07:14
length( mydual.target ) = length( mydual.format )
は不要
なぜなら
translate( mydual.target, '0123456789', '0000000000') = mydual.format
がtrueなら
length( mydual.target ) = length( mydual.format )
もtrueだから
[ メッセージ編集済み 編集者: ぷさいくろう 編集日時 2006-10-02 07:24 ]
|
- 温州蜜柑
- ベテラン
- 会議室デビュー日: 2005/01/24
- 投稿数: 65
- お住まい・勤務地: 東京都
|
投稿日時: 2006-10-03 02:49
引用: |
|
ぷさいくろうさんの書き込み (2006-10-02 07:14) より:
length( mydual.target ) = length( mydual.format )
は不要
なぜなら
translate( mydual.target, '0123456789', '0000000000') = mydual.format
がtrueなら
length( mydual.target ) = length( mydual.format )
もtrueだから
|
ぷさいくろう様
ご指摘のとおりです。フォロー感謝します。
|
- ぷさいくろう
- ぬし
- 会議室デビュー日: 2006/08/30
- 投稿数: 1034
|
投稿日時: 2006-10-03 06:00
mydual.targetの最後に大量の半角空白がある場合もあるけど、
translateの戻り値の型はVrachar2だから空白埋め比較がおきないんよ
[ メッセージ編集済み 編集者: ぷさいくろう 編集日時 2006-10-09 14:22 ]
|