返回SQL

时间:2015-06-09 15:28:05

标签: sql sql-server regex tsql replace

我试图从数据库中删除个人信息(字符串),即。用于测试目的的用户名,地址等。然后,我想使用已删除的字符串来搜索数据库以查看它是否发生在其他地方。我使用的是SQL Server Management Studio。

对于表格MyTable和列PersonalInfo,可能的条目可能如下所示:

Username=JohnSmith,Country=US,InvoiceNumber=12345

我有一个列Redacted的表格看起来像

Username=*,Country=*,InvoiceNumber=*

使用replace(PersonalInfo, Replace(Redacted,'*','%'), Redacted);轻松替换。 但是,有没有办法在临时表中返回JohnSmith和其他数据?基本上我想在正则表达式中识别被%替换的内容。

我已经找到了用其他语言执行此操作的方法,例如java(StackOverflow)但我希望尽可能保留在SQL中。

现在,我意识到如果UsernameCountryInvoiceNumber是单独的列而不仅仅是一个长字符串会更好,但数据库按原样提供给我改变结构不是一种选择。有什么建议?提前致谢。这是我的第一个问题,所以如果我能更好地格式化,请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以尝试输出关键字,它不会告诉您确切的内容,但它会在您更改之前告诉您记录的状态。是的,如果信息正确标准化,它会更好地为您服务。

UPDATE table
SET a = replace.....
OUTPUT DELETED.*
WHERE stuff

查看文档... https://msdn.microsoft.com/en-us/library/ms177564.aspx