トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-248 読みやすい多段Replace
SQLパズル
テーブル
ssn
----------
-12-1234
111- -2222
111-11-
- -
- -9876
000-00-0000
のフォーマットで0を補完したssnを求める。
出力結果
ssn ssn2
---------- -----------
-12-1234 000-12-1234
111- -2222 111-00-2222
111-11- 111-11-0000
- - 000-00-0000
- -9876 000-00-9876
SQL
col ssn2 for a20
with t as(
select '-12-1234' as ssn from dual union all
select '111- -2222' from dual union all
select '111-11-' from dual union all
select '- -' from dual union all
select '- -9876' from dual)
select ssn,
RegExp_Replace(
Replace(
RegExp_Replace(ssn,'^-' ,'000-' )
,'- -','-00-' )
,'-$' ,'-0000') as ssn2
from t;
解説
search patternと
replace patternをひとまとめにする書き方で、
分かりやすい多段Replaceだと思います。