在文本区域中查找SSN

时间:2018-03-21 19:26:43

标签: mysql sql sql-server

我有一个巨大的VARCHAR字段,这是一个电子邮件的正文。电子邮件的任何一侧都可能有任何类型的文字。我想知道是否有人在文本的任何地方列出了他们的社会安全号码。

在WHERE子句中,我尝试了

WHERE X.Description LIKE '%___-__-____%'    

有没有办法找到一个看起来像111-11-1111或111 11 1111

的数字字符串

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

WHERE X.Description LIKE '%[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]%'  

答案 2 :(得分:1)

我不认为您可以保证SSN的分隔符始终是连字符。在SQL Server中,您可以使用like找到示例:

where X.Description LIKE '%[0-9][0-9][0-9][- ][0-9][0-9][0-9][- ][0-9][0-9][0-9][0-9]%'

在MySQL中,您将使用正则表达式:

where X.Description regexp '[0-9]{3}[- ][0-9]{3}[- ]{4}'

答案 3 :(得分:1)

我会在每个括号和%之间添加一个空格,以便像这样安全:

WHERE X.Description LIKE '% [0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9] %'

否则代码会错误地认为这样的东西是SSN:12343444-76-878787878