在MySQL中格式化电话号码

问题描述:

我在数据库中有一堆电话号码,格式如下:(999)123-3456。在MySQL中格式化电话号码

我需要他们的样子123-123-1234

是否有任何形式的正则表达式或东西,我可以在MySQL做快速格式化所有这些电话号码?另外,令人沮丧的是,有些不是这样的格式,所以我不能将它应用到整个列。

谢谢!

+0

存储为VARCHAR处理? – stslavik

一个快速的解决办法是运行这两个查询:

UPDATE table_name set PhoneCol = REPLACE(PhoneCol, '(', ''); 
UPDATE table_name set PhoneCol = REPLACE(PhoneCol, ') ', '-'); 
+0

工作完美,快速,轻松!谢谢! – Sara

只需编写一个循环遍历所有值并更新它们的小php脚本。在php中进行这种改变非常简单。然后在该行上运行更新以覆盖该值。

+0

Prob写一个脚本不是一个好主意,最好使用MySQL函数。使用PHP要慢得多 –

+0

如果你使用PHP,你会有更多的灵活性。她提到并非所有格式都是相同的,所以PHP可以更好地将它们“修复”成单一格式。如果这只是一次转换,谁在乎速度? – Landon

也许是一个两通的解决方案。

  1. 剥离所有非数字字符(空格)
  2. 插图格式化字符“(”,“)”,“”,和“ - ”到正确的地点 (或更好,但离开。他们的时间,格式只在您的报告中选择)