Génération de chaines de caractères aléatoires

Voici deux fonction pour générer, la première, une châine de caractères aléatoire, l’autre une table de chaînes.

Nous allons procéder en 3 temps :

1 – créer une vue donnant un GUID :

CREATE VIEW V_NEWID
AS
SELECT NEWID() AS NEW_ID;

2- créer une fonction qui génère une chaine de caractères en bolobolo :


CREATE FUNCTION F_BOLOBOLO (@MAXCARS INT)
RETURNS VARCHAR(max)
AS
BEGIN
   IF @MAXCARS = 0 RETURN '';
   IF @MAXCARS < 0 RETURN NULL;
   DECLARE @OUT VARCHAR(max);
   SET @OUT = ''
   DECLARE @MOT CHAR(16);
   WHILE LEN(@OUT) < @MAXCARS
   BEGIN
      SET @MOT = CAST(CAST((SELECT NEW_ID FROM V_NEWID) AS VARBINARY(max)) AS CHAR(16));
      SET @OUT = @OUT + @MOT;
   END;
   RETURN RIGHT(@OUT, @MAXCARS)
END;

Test :

SELECT dbo.F_BOLOBOLO(32)

Pour une chaine de 32 caractères

3 – créer une fonction qui génère une table de n lignes de m caractères en bolobolo


CREATE FUNCTION F_BOLOBOLO_TABLE (@MAXCARS INT, @MAXLIGNE INT)
RETURNS @T TABLE (LIGNE VARCHAR(max))
AS
BEGIN
   IF @MAXLIGNE <= 0 RETURN;
   WHILE @MAXLIGNE > 0
   BEGIN
      INSERT INTO @T SELECT dbo.F_BOLOBOLO(@MAXCARS);
      SET @MAXLIGNE = @MAXLIGNE - 1
   END;
   RETURN;
END;

Test :

SELECT *
FROM   dbo.F_BOLOBOLO_TABLE(20, 10)

--------
Frédéric Brouard, SQLpro - ARCHITECTE DE DONNÉES, http://sqlpro.developpez.com/
Expert bases de données relationnelles et langage SQL. MVP Microsoft SQL Server
www.sqlspot.com : modélisation, conseil, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence  * * * * *

MVP Microsoft SQL Server

Laisser un commentaire