我需要匿名化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),RIGHT(someColumn,3))
但是,由于我是SQL的新手,所以我不知道如何使它起作用。我为正在创建的变量添加了'someColumn = new column name。 RIGHT(someColumn)=我要更改的列。当我这样做时,我得到消息,正确的函数需要2个参数?
Zohar的示例:我有一个变量,例如包含:1724981628R01在此变量中的所有这些值上,我想将前10个字母随机化,并保留后三个字母(R01)。我该怎么办?
答案 0 :(得分:0)
几件事。首先,您转换为大int不能保证结果具有正确的字符数。
第二,rand()
对于查询的所有行都是常量。试试这个版本:
UPDATE someTable
SET someColumn = CONCAT(FORMAT(RAND(CHECKSUM(NEWID())
), '0000000000'
),
RIGHT(someColumn, 3)
);