easy google: 12. ..
Возвращение случайных чисел в ЗЕЬЕСТЕ
Как реализуются, функция RAND() в SQL Server не позволяет возвращать различные случайные числа для каждой строки в вашем ЗЕЬЕСТЕ. Например, если вы выполните это:
SELECT Rand() as RandomNumber, *
FROM Northwind..Customers
Вы увидите одно и то же число снова и снова. Однако иногда вам может понадобиться вернуть произвольно сгенерированный номер в строке в SELECT. Вот один из способов сделать это в SQL Server 2000, используя UDF.
Во-первых, нам нужно создать представление, которое возвращает единственное случайное число:
CREATE VIEW vRandNumber
AS
SELECT RAND() as RandNumber
мнение необходимо, потому что обычно в ОДС мы не можем использовать функцию рэнд(), так что бы функцию без determistic. Мы можем обмануть UDF, чтобы принять случайное число, используя View.
Как только установлен, мы можем создать нашу функцию:
CREATE FUNCTION RandNumber()
RETURNS float
AS
BEGIN
RETURN (SELECT RandNumber FROM vRandNumber)
END
Наконец, вы можете использовать эту функцию в любом SELECT, чтобы теперь возвращает случайное число в диапазоне от 0 до 1 для каждой строки:
SELECT dbo.RandNumber(), *
FROM Northwind..Customers
вы можете получить даже любитель в функции RandNumber, принимая семя, если вы хотите, или разрешение для параметров диапазона, как это:
CREATE FUNCTION RandNumber2(@Min int, @Max int)
RETURNS float
AS
BEGIN
RETURN @Min + (select RandNumber from RetRandNumber) * (@[email protected])
END
Нужно ли каждому столбцу УНИКАЛЬНОЕ случайное число? – edosoft