Как анонимизировать данные в SQL? - PullRequest
0 голосов
/ 18 июня 2019

Мне нужно анонимизировать переменную в данных SQL (VAR NAME = "ArId").

Переменная содержит 10 numbers + 1 letter + 2 numbers.Мне нужно рандомизировать 10 первых чисел, а затем сохранить букву + последние два числа.

Я пробовал функцию rand(), но это случайное целое значение.

SELECT TOP 1000 *
FROM [XXXXXXXXXXX].[XXXXXXXXXX].[XXXXX.TEST]

Я только загрузил данные.

РЕДАКТИРОВАТЬ (из "ответа"):

Я пытался: ОБНОВИТЬ someTable SET someColumn = CONCAT (CAST (RAND () * 10000000000 как BIGINT), ПРАВЫЙ(someColumn, 3))

Однако, поскольку я совершенно новичок в SQL, я не знаю, как заставить это работать.Я положил 'someColumn = новое имя столбца для переменной, которую я пишу.RIGHT (someColumn) = столбец, который я изменяю.Когда я делаю это, я получаю сообщение, что правильной функции требуется 2 аргумента ??

Пример для Zohar: у меня есть переменная, содержащая, например: 1724981628R01На всех этих значениях в этой переменной я хотел бы рандомизировать первые 10буквы и оставьте последние три (R01).Как я могу это сделать?

1 Ответ

0 голосов
/ 18 июня 2019

Пара вещей. Во-первых, ваше преобразование в большое int не гарантирует правильного количества символов в результатах.

Во-вторых, rand() является константой для всех строк запроса. Попробуйте эту версию:

UPDATE someTable
    SET someColumn = CONCAT(FORMAT(RAND(CHECKSUM(NEWID())
                                       ), '0000000000'
                                  ),
                            RIGHT(someColumn, 3)
                           );
...