代码之家  ›  专栏  ›  技术社区  ›  NitroxDM

从SQL中的字符串中删除ssn(社会安全号码)

  •  2
  • NitroxDM  · 技术社区  · 17 年前

    我在MS 2000 SQL数据库中有一个字符串,需要使用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!

    有什么想法吗?

    2 回复  |  直到 17 年前
        1
  •  2
  •   shahkalpesh    17 年前

    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来选择字符串的结尾。如果字符串大于此值,则可以增大它。

        2
  •  2
  •   Rex M    17 年前

    假设您可以访问服务器本身, here is an article 它描述了如何使用vbscript将regex函数添加到MSSQL2000。从那里匹配SSN的regex非常简单( [0-9]{3}-[0-9]{2}-[0-9]{4} )您可能需要扩展本文中提供的函数,以支持替换和匹配。