Microsoft SQL Server 是否可以生成从 Min 到 Max 的随机 int 值(3-9 示例,15-99 等)
我知道,我可以从0到Max生成,但是如何增加Min边框呢?
该查询生成从 1 到 6 的随机值。需要将其从 3 更改为 6。
SELECT table_name, 1.0 + floor(6 * RAND(convert(varbinary, newid()))) magic_number
FROM information_schema.tables
5秒后添加:
SELECT table_name, 3.0 + floor(4 * RAND(convert(varbinary, newid()))) magic_number
FROM information_schema.tables
一个有用的编辑器在每个语句之前添加了“Select”,但此项的要点是它可以为返回中的每一行生成唯一的键,而不仅仅是一个项目(为此,我将使用 Rand() 函数)。
例如:
从 tblExample 中选择前 100 个 Rand(),*
将为所有 100 行返回相同的随机值。
尽管:
从 tblexample 中选择前 100 个 ABS(CHECKSUM(NEWID()) % 10),*
将在返回的每一行上返回 0 到 9 之间的不同随机值。
因此,虽然选择使复制和粘贴变得更容易,但如果需要的话,您可以将逻辑复制到选择语句中。
这会生成一个 0-9 之间的随机数
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 至 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 至 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
动态(基于 Eilert Hjelmeseths 评论 - 感谢 jiraiya 提供视觉演示)
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min + 1)) + @min
根据评论更新:
-
NEWID
生成随机字符串(对于返回的每一行)
-
CHECKSUM
获取字符串值并创建数字
- 模数(
%
) 除以该数字并返回余数(意味着最大值比您使用的数字减一)
-
ABS
将负面结果变为正面结果
- 然后将结果加一以消除 0 结果(模拟掷骰子)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)