【发布时间】:2020-09-29 21:22:06
【问题描述】:
我有一个用于医学研究的 SQL Server 2016 数据库。我有一个有四列的表:
- medical_record 编号 (nchar(20))
- patient_last_name (nchar(100))
- patient_first_name (nchar(100))
- diagnostic_text(文本)
我想从 diagnostic 列中删除所有受保护的健康信息 (PHI)。不幸的是,有时本专栏中会提到患者的姓名,我想编辑此信息,将患者姓名替换为“XXXXXX”之类的内容。
我唯一能想到的就是使用游标,遍历每条记录并在每条记录上使用REPLACE,例如:
REPLACE (@diagnostic_text, @patient_last_name), 'XXXXX')
有没有更好的方法来做到这一点?我有大约 500k 行要处理。
我非常感谢任何反馈。我是医生,不是数据库专家。谢谢!
【问题讨论】:
-
如果
diagnostic_text真的是text,那么你将面临一大堆问题。诊断文本中的信息是否可能是手动输入的,因此会出现拼写错误、缩写和人们倾向于编写的其他“快捷方式”? -
ntext和text数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)或varchar(max)。 See details here
标签: sql sql-server string sql-update