Как вернуть случайные числа в виде столбца в SQL Server 2005? - PullRequest
21 голосов
/ 18 сентября 2008

Я выполняю SQL-запрос на SQL Server 2005, и в дополнение к 2 столбцам, запрашиваемым из базы данных, я также хотел бы вернуть 1 столбец случайных чисел вместе с ними. Я попробовал это:

select column1, column2, floor(rand() * 10000) as column3 
from table1

Что-то вроде работает, но проблема в том, что этот запрос возвращает одно и то же случайное число в каждой строке. Каждый раз, когда вы запускаете запрос, это другое число, но оно не меняется от строки к строке. Как я могу сделать это и получить новое случайное число для каждой строки?

Ответы [ 12 ]

1 голос
/ 18 сентября 2008

Для SQLServer есть несколько вариантов.
1. Цикл while для обновления пустого столбца одним случайным числом за раз
2. Сборка .net, содержащая функцию, которая возвращает случайное число

1 голос
/ 18 сентября 2008

Вам нужно использовать UDF

первый:

CREATE VIEW vRandNumber
AS
SELECT RAND() as RandNumber

второй:

CREATE FUNCTION RandNumber()
RETURNS float
AS
  BEGIN
  RETURN (SELECT RandNumber FROM vRandNumber)
  END

тест:

SELECT dbo.RandNumber(), *
FROM <table>

Выше заимствовано из Блог Джеффа по SQL Server

...