Question : Random values
Par Arian Papillon le mercredi 8 février 2023, 16:37 - Lien permanent
Question : Aurais-tu une technique pour qu’au sein d’un SELECT, la fonction Rand() change de valeur sur chaque ligne ? Car malheureusement, elle garde la même valeur sur chaque ligne...
Réponse : effectivement, pour un UPDATE SET col = RAND(), la fonction n'est effectuée qu'une seule fois et la valeur sera la même pour toutes les lignes. Mais il existe une solution, avec la création d'une vue et d'une fonction, qui forcera la fonction à s'exécuter pour chaque ligne.
-- Création d'une vue
CREATE VIEW [dbo].[V_RAND] AS
SELECT RAND() AS RAND
GO
-- Création d'une fonction
CREATE FUNCTION [dbo].[F_GET_RAND] ()
RETURNS FLOAT
AS
BEGIN
RETURN (SELECT RAND FROM V_RAND)
END;
GO
UPDATE MATABLE SET MACOLONNEFLOAT = dbo.F_GET_RAND()