DECLARE @i INT --定义一个整数类型变量
SET @i=1 --设置初始值唯一
CREATE TABLE #biao(sj VARCHAR(10)); --新建一个临时表用来存放后面生成的随机数
WHILE @i<=10 --设置循环条件<=10
BEGIN
INSERT #biao(sj)VALUES((ABS(CHECKSUM(NEWID())) % 9000 + 1000)); --这句是关键代码,用来生成随机数
SET @i=@i+1 --每循环一次,变量@i就加1,循环十次后@i变成11跳出循环,循环一次输出一行,总共输出10行。
END --代码块结尾
SELECT * FROM #biao --查看最后临时表数据,也就是生成的随机数。
DROP TABLE #biao --删除临时表
单独解释一下 INSERT #biao(sj)VALUES((ABS(CHECKSUM(NEWID())) % 9000 + 1000));
这段代码的主要是(ABS(CHECKSUM(NEWID())) % 9000 + 1000)。他的含义是首先使用NEWID()函数生成一个唯一的标识符。然后使用CHECKSUM函数函数计算改标识符的检验和。
所谓检验和就是校验和是一种简单的错误检测方法,用于验证数据在传输过程中是否发生了错误。通俗易懂地说,就好比你给朋友传纸条,为了确保纸条内容没有被篡改或出错,你会在纸条上写一个数字,让朋友收到后计算这个数字,如果计算结果与你写的数字一样,就说明纸条内容没有问题。
在计算机中,校验和也是类似的概念。当数据通过网络传输或存储时,会附加一个校验和,接收方会根据接收到的数据计算校验和,然后与发送方传来的校验和进行比对,如果一致,则说明数据传输没有错误。
校验和通常是通过对数据进行运算(如求和、取余等)得到的一个值,用于验证数据的完整性和准确性。虽然校验和并不能100%保证数据的准确性,但可以在很大程度上提高数据传输的可靠性。
然后使用ABS函数将生成的CHECKSUM转换后的数取绝对值,变成正数。再将这个数用来除9000取余。
这里为什么要除9000呢?
因为我们希望生成的随机数是一个四位数,即在1000到9999之间。所以我们需要一个范围是9000的随机数,然后再加上1000,就可以得到1000到9999之间的随机四位数。
取余操作的作用是将生成的随机数限制在0到8999之间,然后再加上1000,就可以确保生成的随机数是在1000到9999之间的四位数。
因此,除以9000并取余的操作是为了确保生成的随机数在1000到9999之间,符合四位数的要求。
最后加上一千就会得到一个随机的四位数。
最后,代码仅供参考,主要提供思路,具体情况具体对待,根据业务需求修改代码。