use*_*312 2 sql sql-server random
declare @fieldForceCounter as int
declare @SaleDate as dateTime
declare @RandomNoSeed as decimal
set @fieldForceCounter = 1
set @SaleDate = '1 Jan 2009'
set @RandomNoSeed = 0.0
WHILE @fieldForceCounter <= 3
BEGIN
while @SaleDate <= '1 Dec 2009'
begin
INSERT INTO MonthlySales(FFCode, SaleDate, SaleValue) VALUES(@fieldForceCounter, @SaleDate, RAND(@RandomNoSeed))
set @saleDate = @saleDate + 1
set @RandomNoSeed = Rand(@RandomNoSeed) + 1
end
set @SaleDate = '1 Jan 2009'
set @fieldForceCounter = @fieldForceCounter + 1
END
GO
Run Code Online (Sandbox Code Playgroud)
该 T-SQL 命令应该在“ SaleValue”表的“ MonthlySales”列中插入随机值。
但每次都是插入'1'。
可能是什么问题?
两个问题:
解决第二个问题我最喜欢的方法是使用一个保证每次返回唯一值的函数,例如 newid(),将其转换为 varbinary,并将其用作种子:)
编辑:经过一些测试,似乎您需要尝试使用不同的数据类型@RandomNoSeed;float 的行为与十进制有些不同,但仍然接近固定值,因此我建议完全避免使用 @RandomNoSeed,而只需使用:
INSERT INTO MonthlySales(FFCode, SaleDate, SaleValue)
VALUES(@fieldForceCounter, @SaleDate, RAND(convert(varbinary,newid())))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2540 次 |
| 最近记录: |