-1

我需要匿名化 SQL 数据中的变量(VAR NAME = "ArId")

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

我已经尝试过该rand()功能,但这会使整个值随机化。

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

我只加载了数据。

编辑(来自“答案”):

我试过: UPDATE someTable SET someColumn = CONCAT(CAST(RAND() * 10000000000 as BIGINT), RIGHT(someColumn, 3))

但是,由于我对 SQL 完全陌生,所以我不知道如何进行这项工作。我为要创建的变量输入了 'someColumn = new column name。RIGHT(someColumn) = 我正在更改的列。当我这样做时,我得到正确的函数需要 2 个参数的消息?

Zohar 的示例:我有一个变量,例如:1724981628R01在这个变量中的所有这些值上,我想随机化前 10 个字母并保留最后三个(R01)。我怎样才能做到这一点?

4

1 回答 1

1

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

其次,rand()对于查询的所有行都是常数。试试这个版本:

UPDATE someTable
    SET someColumn = CONCAT(FORMAT(RAND(CHECKSUM(NEWID())
                                       ), '0000000000'
                                  ),
                            RIGHT(someColumn, 3)
                           );
于 2019-06-18T11:02:51.657 回答