我想通過一張表並隨機清除一些數據。我正在做一些數據隨機化,把真正的名字變成僞造的名字等等。所涉及的表中有一列有大約40%的時間空列。我的名字randomizer應用程序可以在它指定新的名字時在它的某個位置投擲硬幣。但我寧願最後這樣做:隨機刪除一些數據。如何隨機更新行?
我有這樣的代碼,這是不行的,但看起來確實像它應該對我說:
Use MyDb
go
CREATE VIEW vRandNumber
AS
SELECT RAND() as RandNumber
go
CREATE FUNCTION RandNumber()
RETURNS float
AS
BEGIN
RETURN (SELECT RandNumber FROM vRandNumber)
END
go
select dbo.RandNumber()
update names set nickname = null
where ((select dbo.RandNumber()) > 0.5)
當我運行RandNumber功能也很好,很多隨機的。但是當我進行更新時,它會在一半時間更新所有行,而另一半則不更新行。
我希望它在每次運行腳本時更新隨機數的行。我真的認爲像RandNumber這樣的函數會爲表中的每一行運行一次。顯然不是。
這可能沒有循環,沒有控制檯應用程序?
編輯:我也嘗試了幾個RAND()的變體直接在哪裏得到了相同的結果。
您可以使用:WHERE RAND()> 0.5'。不需要視圖和功能。 – 2010-03-04 15:40:11
@OMG:嘗試過,結果相同。 – jcollum 2010-03-04 15:42:49
10k查看,7 upvotes; smh – jcollum 2017-03-15 16:40:57