![]() |
1
3
如果我想继续开发SQL Server未来版本的软件,我不会这样做。我找到了一种方法,可以从RAND()中为select语句中的每一行返回不同的值。这一发现1)有点骇人,2)是在SQLServer2005上发现的。它不再适用于SQL Server 2008。这种经历让我更加了解了如何依靠诡计让rand()每行返回一个随机值。 另外,我相信SQL Server可以优化对UDF的多次调用。。。尽管这可能正在改变,因为现在它们确实允许一些非确定性函数。 仅限SQL Server 2005,强制在select语句中每行执行rand()的一种方法。 未在2005年之前的任何版本上测试:
另外,我知道你说你不是在问rand()的随机性,但我想一个很好的参考是: http://msdn.microsoft.com/en-us/library/aa175776(SQL.80).aspx |
![]() |
2
1
这取决于你需要什么样的随机值。它还取决于需要值的格式
同样,您可以生成一个
所以我回到 视情况而定。 你能详细说明你需要什么吗? :这是我的同事曾经让计算列在每次查询表时每行返回不同的随机数的表定义片段:
|
![]() |
3
0
|
![]() |
4
0
我不会用这个。据我所知,RAND()使用系统时间作为种子,并在一次又一次快速执行时生成相同的值。例如,尝试以下方法:
RAND()将为每行提供相同的值。 |
![]() |
5
0
我会用
|
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 5 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 6 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 6 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 6 月前 |