SQL で FizzBuzz (Oracle 編)
「Oracle 編」と書いてはみたものの,Oracle 以外はやりそうもない予感.
実は最初,H2 Database Engine でやろうと思ったのだけど,H2 って再帰問い合わせはまだサポートしてないのね.
ってことになると,数列を作るのに 10 行のテーブルまたはビューを用意して自己クロス結合するみたいな方法しか思いつかなくて,そんなのやるまでもないというかつまらないので Oracle の階層問い合わせに逃げましたとさ.
そんなわけで (どんなわけで?),こうなりました.
select case when mod(n, 15) = 0 then 'FizzBuzz' when mod(n, 3) = 0 then 'Fizz' when mod(n, 5) = 0 then 'Buzz' else to_char(n) end from ( select level n from dual connect by level <= 100 ) order by n
んー...
これもつまらないか.(^^;
いいの,こういうネタでもないと階層問い合わせを使う機会がないんだもん.
そういえば,Oracle って標準 SQL の再帰問い合わせ (WITH RECURSIVE) ってサポートしてるのかな?
ごそごそ.
んー... サポートしてないっぽい.
Microsoft SQL Server はサポートしてる?
だったら id:taedium さんがセットアップしてくれたら試してみようかな.
そういう時でもないと SQL Server も再帰問い合わせを使う機会もなさそうだもん.