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