MSSQL Shuffle Funktion zum anonymisieren von Daten
Ich wollte einige Datensätze für die Testumgebung anonymisieren und heraus kam eine kleine Funktion, die ein zufälligen String generiert. Als Parameter wird der Funktion eine beliebige Zeichenfolge und die Angabe, wie lang der zufällige Wert sein soll, mitgegeben. Der erste Buchstabe im Resultat wird als Großbuchstabe zurückgegeben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | CREATE VIEW Random AS SELECT RAND() AS RAND GO CREATE FUNCTION Shuffle(@string AS nvarchar(MAX), @LENGTH AS INT) RETURNS VARCHAR(MAX) BEGIN DECLARE @RESULT NVARCHAR(MAX) DECLARE @counter INT SET @RESULT = '' SET @counter = 0 WHILE @counter < @LENGTH BEGIN SELECT @RESULT = @RESULT + SUBSTRING(@string, (SELECT CONVERT(INT, (RAND * LEN(@string) + 1)) FROM Random), 1) SET @counter = @counter + 1 END SELECT @RESULT = UPPER(LEFT(@RESULT,1)) + SUBSTRING(@RESULT,2,LEN(@RESULT)) RETURN @RESULT END GO |
Aufzurufen wird das Ganze dann wie folgt:
1 2 | UPDATE dbo.Persons SET Lastname = dbo.Shuffle('abcdefghijklmnoprstuvwz', 8) |
Alternativ könnte man anstelle der Zeichen, den alten Wert aus der Spalte und die Länge mitgeben,
1 2 | UPDATE dbo.Persons SET Lastname = dbo.Shuffle(Lastname, LEN(Lastname)) |
Viel Spaß beim entwickeln : )
Cool wäre jetzt noch, wenn man den String lesbar macht, hat einer eine Idee?