You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL实现FizzBuzz:编写查询输出1-1000的对应序列

PostgreSQL实现1到1000的FizzBuzz序列查询

你的伪代码中文翻译:

SELECT
   CASE
     WHEN (1到1000之间的数)% 3 = 0 THEN "Fizz",
     WHEN (1到1000之间的数)% 5 = 0 THEN "Buzz",
     WHEN (1到1000之间的数)% 5 = 0 AND (1到1000之间的数)% 3 = 0 THEN "FizzBuzz",
   END

伪代码存在的问题:

  • 缺少生成1到1000连续数字的逻辑,PostgreSQL需要用generate_series函数生成序列
  • CASE条件顺序错误:必须先判断同时是3和5的倍数(15的倍数),否则会被前面的3或5的倍数条件提前匹配,导致FizzBuzz永远不会输出
  • 语法错误:CASE分支间不能加逗号;字符串常量需用单引号(双引号在PostgreSQL中用于标识符);第三个WHEN里重复使用WHEN关键字,应改为AND连接条件;缺少ELSE分支输出非3/5倍数的原数字

正确的查询语句:

SELECT
  CASE
    WHEN num % 15 = 0 THEN 'FizzBuzz'
    WHEN num % 3 = 0 THEN 'Fizz'
    WHEN num % 5 = 0 THEN 'Buzz'
    ELSE num::TEXT
  END AS result
FROM generate_series(1, 1000) AS nums(num);

代码说明:

  • generate_series(1, 1000):生成从1到1000的连续整数序列,通过AS nums(num)给序列列命名为num
  • CASE分支顺序:优先判断15的倍数,避免被3或5的条件覆盖
  • ELSE num::TEXT:将原数字转为字符串类型,确保所有输出结果的类型一致
  • AS result:为输出列指定别名,让结果集更易读

内容的提问来源于stack exchange,提问作者Felipe Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:17:38