Я нашел много ответов, когда вызов RAND
постоянно обновляется, но это означает, что при создании разных значений для каждой строки операция не может быть повторена с тем же результатом. Есть ли способ гарантировать, что каждая строка получает новое значение, но где она по-прежнему посеяна начальным вызовом?SQL Server 2008, как обновить столбец с посеянными случайными значениями?
Нижеприведенные попытки не работают:
UPDATE #TestTable
SET
Number = CONVERT(INT, FLOOR(RAND(CHECKSUM(NEWID())) * 1000))
Каждая строка имеет другое значение, но каждый раз, когда я запускаю его значения для данной строки изменяются.
DECLARE @RandomSeeder FLOAT;
--Seeds the value, probably a better way to do this.
SELECT @RandomSeeder = RAND(5336);
UPDATE #TestTable
SET
Number = CONVERT(INT, FLOOR(RAND() * 1000));
Похоже, что RAND вызывается один раз, а затем это значение используется в каждой строке.
Почему вам нужно повторить операцию с теми же результатами? Кинда - оксюморон. Мне нужны одни и те же значения и порядок от случайной функции ... – xQbert
См. [Этот ответ] (http://stackoverflow.com/a/30173756/119477) –
@xQbert Мне нужны случайные данные, но я хочу, чтобы чтобы начать с того же места во время работы на нем, чтобы, если я нахожу ошибку, я могу ее повторно тестировать. Представьте, что вы пытаетесь отлаживать код, который полагается на вызовы на случайную функцию. Без возможности семени отладки случайного вызова функция намного сложнее. – Lawtonfogle