easy google: 12. ..
de retour nombres aléatoires dans une instruction SELECT
Comme il est mis en œuvre, la fonction RAND() dans SQL Server ne retourne vous permet pas un autre nombre aléatoire par ligne dans votre instruction SELECT. Par exemple, si vous exécutez ceci:
SELECT Rand() as RandomNumber, *
FROM Northwind..Customers
Vous verrez le même nombre encore et encore. Cependant, parfois, vous voudrez peut-être retourner un nombre généré aléatoirement par ligne dans votre SELECT. Voici une façon de le faire, dans SQL Server 2000, en utilisant un fichier UDF.
D'abord, nous devons créer une vue qui renvoie un nombre aléatoire simple:
CREATE VIEW vRandNumber
AS
SELECT RAND() as RandNumber
La vue est nécessaire, car normalement dans une UDF, nous ne pouvons pas utiliser la fonction rand(), car cela rendrait la fonction non-déterministe. Nous pouvons tromper l'UDF pour accepter un nombre aléatoire en utilisant une vue.
Une fois qui est mis en place, nous pouvons créer notre fonction:
CREATE FUNCTION RandNumber()
RETURNS float
AS
BEGIN
RETURN (SELECT RandNumber FROM vRandNumber)
END
Enfin, vous pouvez utiliser cette fonction dans tout SELECT pour revenir maintenant un nombre aléatoire entre 0 et 1 par ligne:
SELECT dbo.RandNumber(), *
FROM Northwind..Customers
vous pouvez obtenir même colombophile dans votre fonction RandNumber en acceptant une graine si vous le souhaitez, ou permettant des paramètres de gamme comme celui-ci:
CREATE FUNCTION RandNumber2(@Min int, @Max int)
RETURNS float
AS
BEGIN
RETURN @Min + (select RandNumber from RetRandNumber) * (@[email protected])
END
Est-ce que chaque colonne a besoin d'un nombre aléatoire UNIQUE ?? – edosoft