Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL中匿名化数据?_Sql_Sql Server_Sql Server 2016_Data Masking - Fatal编程技术网

如何在SQL中匿名化数据?

如何在SQL中匿名化数据?,sql,sql-server,sql-server-2016,data-masking,Sql,Sql Server,Sql Server 2016,Data Masking,我需要匿名化SQL数据中的变量(VAR NAME=“andry”) 变量包含10个数字+1个字母+2个数字。我需要将前10个数字随机化,然后保留字母+最后两个数字 我尝试了rand()函数,但这会使整个值随机化 SELECT TOP 1000 * FROM [XXXXXXXXXXX].[XXXXXXXXXX].[XXXXX.TEST] 我只加载了数据 编辑(来自“答案”): 我尝试过:更新someTable 设置someColumn=CONCAT(强制转换(RAND()*1000000000为

我需要匿名化SQL数据中的变量
(VAR NAME=“andry”)

变量包含
10个数字+1个字母+2个数字
。我需要将前10个数字随机化,然后保留字母+最后两个数字

我尝试了
rand()
函数,但这会使整个值随机化

SELECT TOP 1000 *
FROM [XXXXXXXXXXX].[XXXXXXXXXX].[XXXXX.TEST]
我只加载了数据

编辑(来自“答案”):

我尝试过:更新someTable 设置someColumn=CONCAT(强制转换(RAND()*1000000000为BIGINT),右(someColumn,3))

然而,由于我对SQL完全陌生,我不知道如何使其工作。我为正在装箱的变量输入'someColumn=新列名。右(someColumn)=我正在更改的列。当我这样做时,我得到的信息是正确的函数需要两个参数


Zohar示例:我有一个变量,其中包含例如:1724981628R01。在这个变量中的所有这些值上,我想随机化前10个字母,保留最后3个字母(R01)。我该怎么做呢?

有几件事。首先,转换为大整数并不能保证结果的字符数正确

其次,
rand()
对于查询的所有行都是常量。请尝试以下版本:

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

对不起,我正在使用Microsoft SQL server 2016对不起,我不明白这个问题。请将示例数据包括为DDL+DML(创建表和插入语句)、当前尝试和所需结果。请注意,我们只需要能够证明问题的样本数据,而不必是实际项目中的实际数据。A
将@T声明为表(…)。。。。在大多数情况下,插入到@T..。
就足够了。这里的“变量”是什么意思,您不想更新表吗?