Это зависит от того, для чего вам нужно случайное значение. Это также зависит от того, в каком формате вам нужно значение в INTEGER
, VARCHAR
и т. Д.
если мне нужно отсортировать строки случайным образом, я делаю что-то вроде
SELECT *
FROM [MyTable]
ORDER BY newID()
Аналогично, вы можете сгенерировать таблицу из ints
, используя «особенность» SQL Server и выполнить аналогичный запрос, который может дать вам случайное число.
Моему коллеге требовалось случайное целое число на строку, поэтому он добавил вычисляемое поле в нашу таблицу, и оно генерирует одно случайное число (целое число) на строку, возвращаемое в запросе. Я не уверен, что рекомендую это; это вызывало проблемы в некоторых инструментах, но давало случайные целые числа для каждой таблицы. Затем мы можем объединить мое решение newid()
и эту таблицу и получить набор случайных чисел, когда это необходимо.
Так что я возвращаюсь к Это зависит. Можете ли вы уточнить, что вам нужно?
Обновление : Вот фрагмент определения таблицы, который мой коллега использовал для того, чтобы вычисляемый столбец возвращал другое случайное число в строке при каждом запросе к таблице:
CREATE TABLE [dbo].[Table](
-- ...
[OrderID] [smallint] NOT NULL, --Not sure what happens if this is null
-- ...
[RandomizeID] AS (convert(int,(1000 * rand(([OrderID] * 100 * datepart(millisecond,getdate())))))),
-- ...
)