通过 SQL 查询/批处理清理名称

Bri*_*ins 4 sql-server scripting sql-server-2008-r2

我们有敏感信息(人名),我们正在寻找一个脚本来“清理”这些人名。有没有人想出一个很好的算法来做到这一点,而不是让所有姓氏都变成“TEST”之类的?

谢谢。

Bra*_*don 5

由于 NPI(非公开信息)原因,我不得不在前任雇主处执行此操作。最终在脚本中打乱字段,因为名字/姓氏对不是 NPI,除非它与其他东西相关联。

这是脚本的粗略版本。调味。此外,这假设您在不同的字段中有名字和姓氏。

CREATE TABLE #RandomData
(
    DataID int not null,
    ID int not null,
    FirstName varchar(50),
    LastName varchar(50)
)

INSERT INTO #RandomData (ID, DataID)
SELECT ROW_NUMBER() OVER (ORDER BY NEWID()), DataId FROM DataTable

UPDATE r SET r.FirstName = x.FirstName
FROM #RandomData r
INNER JOIN (
    SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS ID, FirstName FROM DataTable
) x
    ON x.ID = r.ID

UPDATE r SET r.LastName = x.LastName
FROM #RandomData r
INNER JOIN (
    SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS ID, LastName FROM DataTable
) x
    ON x.ID = r.ID

CREATE CLUSTERED INDEX PK_RandomData ON #RandomData
(
    DataID asc
)

ALTER TABLE DataTable DISABLE TRIGGER ALL

UPDATE dt 
    SET dt.FirstName = r.FirstName, 
    dt.LastName = r.LastName
FROM DataTable dt
INNER JOIN #RandomData r
    ON dt.DataId = r.DataId

ALTER TABLE DataTable ENABLE TRIGGER ALL

DROP TABLE #RandomData
Run Code Online (Sandbox Code Playgroud)