Fizz buzz SQL逻辑错误
-SQL中的1到100,如果数字可被3整除,则显示“Fizz”;如果数字可被5整除,则显示“Buzz”;如果数字可被两者整除,则显示“FizzBuzz”。下面是我的代码Fizz buzz SQL逻辑错误,sql,oracle,Sql,Oracle,-SQL中的1到100,如果数字可被3整除,则显示“Fizz”;如果数字可被5整除,则显示“Buzz”;如果数字可被两者整除,则显示“FizzBuzz”。下面是我的代码 select Case when Remainder (rownum,3)=0 then 'Fizz' when Remainder (rownum,5)=0 then 'Buzz' when (remainder (rownum,3)=0 and remainder(ROWNUM,5) = 0) th
select
Case when Remainder (rownum,3)=0 then 'Fizz'
when Remainder (rownum,5)=0 then 'Buzz'
when (remainder (rownum,3)=0 and remainder(ROWNUM,5) = 0) then 'FizzBuzz'
else rownum end
from DUAL
Connect by level <=100;
选择
当余数(rownum,3)=0时,则为“嘶嘶”
当余数(rownum,5)=0时,则为“嗡嗡声”
当(余数(rownum,3)=0,余数(rownum,5)=0)时,则“嘶嘶嘶嘶”
else rownum end
来自双重
按级别连接在else语句中。Rownum是一个数字,而Fizz、Buzz和FizzBuzz是CHAR。在else语句中。Rownum是一个数字,而Fizz、Buzz和FizzBuzz是CHAR。select
select
Case when Remainder (rownum,3)=0 then 'Fizz'
when Remainder (rownum,5)=0 then 'Buzz'
when (remainder (rownum,3)=0 and remainder(ROWNUM,5) = 0) then 'FizzBuzz'
else ''||rownum end
from DUAL
Connect by level <=100;
当余数(rownum,3)=0时,则为“嘶嘶”
当余数(rownum,5)=0时,则为“嗡嗡声”
当(余数(rownum,3)=0,余数(rownum,5)=0)时,则“嘶嘶嘶嘶”
else“”| | rownum end
来自双重
按级别连接<代码>选择
当余数(rownum,3)=0时,则为“嘶嘶”
当余数(rownum,5)=0时,则为“嗡嗡声”
当(余数(rownum,3)=0,余数(rownum,5)=0)时,则“嘶嘶嘶嘶”
else“”| | rownum end
来自双重
按级别连接您需要通过以下任一方式将ROWNUM
转换为ELSE
案例中的字符串:
CAST(ROWNUM作为VARCHAR2(3))
”|| ROWNUM
TO_CHAR(ROWNUM)
您还需要将同时可被3和5整除的大小写放在列表的顶部(否则前面的大小写将优先)。像这样:
SELECT CASE
WHEN remainder (rownum,15)=0 THEN 'FizzBuzz'
WHEN Remainder (rownum,3)=0 THEN 'Fizz'
WHEN Remainder (rownum,5)=0 THEN 'Buzz'
ELSE TO_CHAR(rownum)
END
FROM DUAL
CONNECT BY LEVEL <= 100;
选择案例
当余数(rownum,15)=0时,则为'FizzBuzz'
当余数(rownum,3)=0时,则为“嘶嘶”
当余数(rownum,5)=0时,则为“嗡嗡声”
ELSE TO_CHAR(rownum)
结束
来自双重
按级别连接您需要通过以下任一方式将ROWNUM
转换为ELSE
案例中的字符串:
CAST(ROWNUM作为VARCHAR2(3))
”|| ROWNUM
TO_CHAR(ROWNUM)
您还需要将同时可被3和5整除的大小写放在列表的顶部(否则前面的大小写将优先)。像这样:
SELECT CASE
WHEN remainder (rownum,15)=0 THEN 'FizzBuzz'
WHEN Remainder (rownum,3)=0 THEN 'Fizz'
WHEN Remainder (rownum,5)=0 THEN 'Buzz'
ELSE TO_CHAR(rownum)
END
FROM DUAL
CONNECT BY LEVEL <= 100;
选择案例
当余数(rownum,15)=0时,则为'FizzBuzz'
当余数(rownum,3)=0时,则为“嘶嘶”
当余数(rownum,5)=0时,则为“嗡嗡声”
ELSE TO_CHAR(rownum)
结束
来自双重
按级别连接将rownum强制转换为varchar2将rownum强制转换为varchar2de,因为缺少错误的大小写表达式分支顺序(请参阅MT0的答案以获取解释)@mathguy有点苛刻,因为这确实回答了问题的主要焦点<;code>ORA-00932
异常的问题。由于缺少case-expression分支的错误顺序(请参见MT0的答案以获取解释),因此取消对该问题的评分@mathguy有点苛刻,因为这确实回答了ORA-00932
异常的问题,这是问题的主要焦点。非常感谢你让我开心!非常感谢你让我开心!
SELECT NVL(
DECODE(MOD(LEVEL,3),0,'Fizz')||DECODE(MOD(LEVEL,5),0,'Buzz'),
''||LEVEL
)
FROM DUAL
CONNECT BY LEVEL<101