不是数据库人员,但是:我在我继承的mySql数据库中混淆了数据。
某些电话号码格式为(512) 555-1212
(称之为脏)
其他5125551212
(称之为干净)
我需要一个说
的sqlstametUPDATE table_name
SET Phone="clean'(Some sort of cleaning code - regex?)
WHERE Phone='Dirty'
答案 0 :(得分:5)
不幸的是,MySQL中没有正则表达式替换/更新。如果它只是括号和破折号和空格,那么一些嵌套的REPLACE
调用就可以解决这个问题:
UPDATE table_name
SET Phone = REPLACE(REPLACE(REPLACE(REPLACE(Phone, '-', ''), ')', ''), '(', ''), ' ', '')
答案 1 :(得分:0)
据我所知,您无法在更新过程中运行regexp来替换数据。仅在SELECT语句中。
您最好的选择是使用您熟悉的脚本语言并阅读表格并以此方式进行更改。基本上通过检索所有条目。然后使用字符串替换来匹配简单的正则表达式,例如[^\d]*
,并删除这些字符。然后使用新值更新表。