生成 1 - 10 范围内的随机数

新手上路,请多包涵

由于我在 这个问题 中处理的测试查询方法没有奏效,我现在正在尝试其他方法。有没有办法告诉 pg 的 random() 函数让我只得到 1 到 10 之间的数字?

原文由 KB22 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

如果用 1 到 10 之间的数字表示 >= 1 且 < 10 的任何浮点数,那么这很容易:

 select random() * 9 + 1

这可以通过以下方式轻松测试:

 # select min(i), max(i) from (
    select random() * 9 + 1 as i from generate_series(1,1000000)
) q;
       min       |       max
-----------------+------------------
 1.0000083274208 | 9.99999571684748
(1 row)

如果你想要整数,即 >= 1 和 < 10,那么很简单:

 select trunc(random() * 9 + 1)

再一次,简单的测试:

 # select min(i), max(i) from (
    select trunc(random() * 9 + 1) as i from generate_series(1,1000000)
) q;
 min | max
-----+-----
   1 |   9
(1 row)

原文由 user80168 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试这个:

 Select (ROW_NUMBER() OVER (ORDER BY ItemDesc ASC)+15000) as ID, ItemCode, ItemDesc

原文由 Sajeev Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题