Sql-Server

通過 SQL 查詢/批處理清理名稱

  • December 6, 2021

我們有敏感資訊(人名),我們正在尋找一個腳本來“清理”這些人名。有沒有人想出一個好的算法來做到這一點,而不是僅僅讓所有的姓氏都變成“TEST”之類的?

謝謝。

由於 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

引用自:https://dba.stackexchange.com/questions/11719