我将在我的数据库中编辑一些虚假数据。但是,如果我将为每一行和每一列制作随机数,它就不会像我想要的那样随机。结果可以在下图中看到。
这是我使用的代码:
WITH x AS
(
SELECT mintwee, mineen, nul, pluseen, plustwee
FROM Topic
)
SELECT mintwee = CAST(RAND()*100 AS INT),
mineen = CAST(RAND()*100 AS INT),
nul = CAST(RAND()*100 AS INT),
pluseen = CAST(RAND()*100 AS INT),
plustwee = CAST(RAND()*100 AS INT)
FROM x
和这个:
WITH x AS
(
SELECT
mintwee = CAST(RAND()*100 AS INT),
mineen = CAST(RAND()*100 AS INT),
nul = CAST(RAND()*100 AS INT),
pluseen = CAST(RAND()*100 AS INT),
plustwee = CAST(RAND()*100 AS INT)
FROM Topic
)
SELECT mintwee, mineen, nul, pluseen, plustwee
FROM x ;
但两者的结果相同。我知道,我必须使用一个UPDATE
语句,但这只是在结果好的情况下尝试。之后,我将使用该UPDATE
语句。
我使用带有 express 2014 版本的 SQL Server。
由于表行和 RAND 函数之间没有关联,因此该表达式在查询中只计算一次。
生成随机值的一种方法是使用 NEWID() 函数。下面的示例生成 0-99 范围之间的随机整数值。模值可以针对不同的范围进行调整,您可以使用此基本技术为日期、字符等生成随机值。
编辑:
根据 Aaron 的评论,如果您只需要 32 位整数,则可以简化表达式。其他示例:
尝试这个:
我们使用这个视图来生成一个随机整数(只是因为 SQL Server 不会简单地让我们
Crypt_Gen_Random()
在 UDF 中使用):使用这个视图作为基础,我们可以得到任何随机整数,然后做一些数学来重新调整它:
NormalizeBetween 的定义是: