懲りずにズンドコキヨシ。
ワイ将、明智重蔵氏 の 下記エントリに衝撃を受ける。彡(゚)(゚)
Oracleの再帰With句でズンドコキヨシ
http://qiita.com/AketiJyuuzou/items/c2bc63872125e7277e96
と云う訳(?)で、再帰WITH句の手習いがてら、リファクタリングっぽく似たのを作ってみた。
WITH rec(zundoko) AS (
SELECT NULL FROM DUAL
UNION ALL
SELECT zundoko || MOD(TRUNC(DBMS_RANDOM.VALUE*10), 2)
FROM REC
WHERE zundoko IS NULL
OR zundoko NOT LIKE '%00001'
)
SELECT kiyoshi FROM (
SELECT REPLACE(REPLACE(zundoko, '0', 'ズン!'), '1', 'ドコ!') || 'キ・ヨ・シ!' AS kiyoshi
FROM rec
ORDER BY ROWNUM DESC
)
WHERE ROWNUM <= 1
/
結果は以下の通り、なるほどねぇ……彡(-)(-)
SQL> WITH rec(zundoko) AS (
2 SELECT NULL FROM DUAL
3 UNION ALL
4 SELECT zundoko || MOD(TRUNC(DBMS_RANDOM.VALUE*10), 2)
5 FROM REC
6 WHERE zundoko IS NULL
7 OR zundoko NOT LIKE '%00001'
8 )
9 SELECT kiyoshi FROM (
10 SELECT REPLACE(REPLACE(zundoko, '0', 'ズン!'), '1', 'ドコ!') || 'キ・ヨ・シ!' AS kiyoshi
11 FROM rec
12 ORDER BY ROWNUM DESC
13 )
14 WHERE ROWNUM <= 1
15 /
KIYOSHI
--------------------------------------------------------------------------------
ズン!ズン!ズン!ドコ!ドコ!ズン!ズン!ドコ!ドコ!ズン!ズン!ドコ!ドコ!ズ
ン!ズン!ズン!ドコ!ズン!ズン!ドコ!ドコ!ドコ!ズン!ドコ!ズン!ズン!ズン
!ドコ!ドコ!ドコ!ドコ!ドコ!ズン!ドコ!ドコ!ズン!ズン!ズン!ドコ!ズン!
ズン!ズン!ズン!ズン!ドコ!キ・ヨ・シ!
以前の旅人算もそうなんですが、
氏の記事は実にエッジが効いていて参考になります(`・ω・)ゞ
Oracle ACE 山岸賢治氏
http://www.oracle.com/technetwork/jp/database/articles/vivadeveloper/index-1838333-ja.html
US-OTNでは「Aketi Jyuuzou」、OTN-Japanのフォーラムでは「明智重蔵」のハンドルネームで活躍中。
「Oracle SQLパズル」を運営。
第1部 再帰with句の使用例
http://www.oracle.com/technetwork/jp/articles/otnj-sql-image7-1525406-ja.html#a10-349 旅人算メソッドで連続日付をグループ化
http://www.geocities.jp/oraclesqlpuzzle/10-349.html
ズンドコキヨシまとめは下記
ズンドコキヨシまとめ
http://qiita.com/shunsugai@github/items/971a15461de29563bf90