我在mySQL中有一个表格,其中包含一个文本字段,其中包含各种文本,并且该文本中包含此格式的社会安全号码SS#111-22-3333表格中有大约40,000条记录。我希望能够搜索该字段并从字段中删除社会安全号码,使其余文本保持不变。我搜索过但没有找到如何做到这一点的例子。
答案 0 :(得分:0)
没有原生功能。您可以使用用户定义的函数 - 看看这里: https://launchpad.net/mysql-udf-regexp
您也可以考虑使用ETL框架(例如Clvoer ETL Framework - http://www.cloveretl.com/)。
答案 1 :(得分:0)
我假设社会安全号码以“SS#”开头。我想你可以做到你想做的事情:
update t
set text = insert(text, instr(text, 'SS#'), 15, '')
where field regexp 'SS#[0-9]0-9][0-9]-[0-9]0-9]-[0-9]0-9][0-9]';
即,找到包含社会安全号码的行。然后找到模式的开头并用任何内容替换接下来的15个字符。
答案 2 :(得分:0)
如果文本中的所有 SSN都以SS#
开头且空格和,则它们都是999-99-9999格式,您可以使用LOCATE
函数获取SS#
的位置,然后使用SUBSTRING
执行其余操作:
UPDATE myTable
SET text =
CONCAT(
SUBSTRING(text, 1, LOCATE('SS# ', text) - 1),
SUBSTRING(text, LOCATE('SS# ', text) + 15)
)
WHERE text LIKE '%SS# %'
使用您刚发布的示例,查询将转为此...
Bob H. Test, SS# 111-22-3333 Born: 1-1-1900, Mytown, NY. Died: 9-9-2002, ...
......进入这个:
Bob H. Test, Born: 1-1-1900, Mytown, NY. Died: 9-9-2002, ...