Transact‐SQLでFizzBuzz問題を解いてみた
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Space required after the Public Identifier in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
Warning: simplexml_load_string() [function.simplexml-load-string]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : SystemLiteral " or ' expected in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
Warning: simplexml_load_string() [function.simplexml-load-string]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : SYSTEM or PUBLIC, the URI is missing in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
Warning: simplexml_load_string() [function.simplexml-load-string]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /home/iex3/www/www/wp-content/plugins/AmazonLink/AmazonLink.php on line 410
この記事の所要時間: 約 0分46秒
haruiruka氏が
とつぶやいていたので、気分転換にTransact-SQLで書いてみました。
最初は簡単にwhileでループ処理して出力する方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
declare @num int; declare @max int; set @num = 1; set @max = 100; while @num <= @max begin print case when @num % 3 = 0 and @num % 5 = 0 then 'FizzBuzz' when @num % 3 = 0 then 'Fizz' when @num % 5 = 0 then 'Buzz' else cast(@num as nvarchar(5)) end; set @num = @num + 1; end |
次に、ムダにtable型変数を定義し、select句で結果を出力。
ただただtable型変数を使ってみたかっただけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
declare @num int; declare @max int; set @num = 1; set @max = 100; declare @temp table ( id int not null ); while @num <= @max begin insert into @temp values (@num); set @num = @num + 1; end select case when id % 3 = 0 and id % 5 = 0 then 'FizzBuzz' when id % 3 = 0 then 'Fizz' when id % 5 = 0 then 'Buzz' else cast(id as nvarchar(5)) end as result from @temp |
もうちょっとスマートにする方法が浮かばず、なにか不完全燃焼チックです…
特にcase式で出力してる点が…