是否可以在中生成从Min到Max的随机int值(3-9示例,15-99 e.t.c)
我知道,我可以生成从0到最大值,但是如何增加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发布于 2013-08-23 17:33:04
一个有用的编辑器在每个语句之前添加了'Select‘,但是这个条目的要点是它可以为返回中的每一行生成唯一的键,而不仅仅是一个条目(为此,我将使用Rand()函数)。例如:从tblExample中选择top 100 Rand(),*
将对所有100行返回相同的随机值。
While:选择top 100 ABS(校验和(NEWID())% 10),*来自tbl示例
将在返回的每一行上返回不同的随机值(0到9)。因此,虽然select使复制和粘贴变得更容易,但如果需要的话,可以将逻辑复制到select语句中。
这将在0-9之间生成一个随机数。
SELECT ABS(CHECKSUM(NEWID()) % 10)1至6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 13至6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3动态(基于Eilert Hjelmeseth的评论-感谢jiraiya提供可视化演示)
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min + 1)) + @min根据评论意见更新:
NEWID生成随机字符串(作为回报的每一行)CHECKSUM接受字符串的值并创建数字%)除以该数并返回余数(意味着最大值比所使用的数少一个)ABS将阴性结果改为阳性结果发布于 2011-10-24 15:54:10
我看到您在Server 2008中为您的问题添加了一个答案,您也可以这样做
SELECT 3 + CRYPT_GEN_RANDOM(1) % 4 /*Random number between 3 and 6*/
FROM ...这种方法的一些缺点是
NEWID()方法慢但我只是想把它作为另一种选择。
发布于 2011-10-24 15:58:51
你可以这样做:
DECLARE @maxval TINYINT, @minval TINYINT
select @maxval=24,@minval=5
SELECT CAST(((@maxval + 1) - @minval) *
RAND(CHECKSUM(NEWID())) + @minval AS TINYINT)这是直接从此链接那里得到的,我真的不知道如何对这个答案给予适当的信任。
https://stackoverflow.com/questions/7878287
复制相似问题