トップページに戻る
次のmodel句のサンプルへ
前のmodel句のサンプルへ
model句11 work変数を用意して正規表現
SQLパズル
StrReverseテーブル
str
-----------------
/123/
/123/456/
/123/456/789/
/123/456/789/abc/
/を区切りとして、strを反転させる。
出力結果
str newStr
----------------- ------------------
/123/ /123/
/123/456/ /456/123/
/123/456/789/ /789/456/123/
/123/456/789/abc/ /abc/789/456/123/
データ作成スクリプト
create table StrReverse(str) as
select '/123/' from dual union
select '/123/456/' from dual union
select '/123/456/789/' from dual union
select '/123/456/789/abc/' from dual;
SQL
col str for a20
col newStr for a20
select str,newStr
from StrReverse
model
dimension by (RowNum as soeji)
measures(str,str as work,cast('/' as varchar2(200)) as newStr)
rules iterate (100)
(newStr[any] = newStr[CV()] || RegExp_SubStr(work[CV()],'[^/]+/$'),
work[any] = RegExp_Replace(work[CV()],'[^/]+/$'));
解説
モデリングのSQLより引用
>デフォルトでは、ルールはMODEL句内での出現順に評価されます。
>MODEL句でオプションのキーワードSEQUENTIAL ORDERを指定すると、
>評価順序を明示できます。
デフォルトがsequential orderなので省略してOKなようです。
いいかえれば、省略しておけば、上から順番にruleを実行してくれるということです。