我在MS 2000 SQL db中有一个字符串,需要使用select语句删除SSN。我没有使用外部应用程序的选项。另一个有趣的部分是SSN的位置并不总是相同。
[B-Day][First Name][SSN][POB]
12121970John123-45-6789Las Vages
或者
[B-Day][First Name][Last Name][SSN][POB]
12121970JohnDoe123-45-6789Las Vages
我需要SQL种类的RegEx!
有什么想法吗?
答案 0 :(得分:2)
假设您可以访问服务器本身here is an article,它描述了如何使用VBScript将正则表达式函数添加到MSSQL 2000.从那里,匹配SSN的正则表达式非常简单([0-9]{3}-[0-9]{2}-[0-9]{4}
)。您可能需要扩展文章中提供的功能以支持替换和匹配。
答案 1 :(得分:2)
SELECT substring(a, 1, PatIndex('%[0-9][0-9][0-9]-%', a) - 3)
+ substring(a, PatIndex('%[0-9][0-9][0-9]-%', a) + 9, 100) FROM myTable
myTable是表,“a”是列的名称。
编辑:当然,有一些关于社会安全号码格式的假设。 另外,我添加了一个任意数字100来挑选字符串到最后。如果您的字符串超过该字符串,则可以增加它。