不幸的是,没有REGEXP_MATCHES()或TRANSLATE()函数附带标准的
MySQL安装(它们与
Postgres一起使用),所以你可以这样做,我觉得很脏,但它的工作原理.
>首先,通过使用replace()删除不是数字的字符来清理列
>然后你使用substr()将字符串的几个部分分开
>最后,你连接它们在你的子串与concat()之间添加符号
如果您还有其他需要截断的字符,只需在已存在的3之上添加另一个replace().
样本数据
create table nums ( num text );
insert into nums values
('2125551212'),
('212-555-1212'),
('(212)5551212');
查询格式化数据
select
num,
concat('(',substr(num_cleansed,1,3),') ',substr(num_cleansed,4,3),'-',substr(num_cleansed,7)) AS num_formatted
from (
select
num,
replace(replace(replace(num,'(',''),')',''),'-','') as num_cleansed
from nums
) foo
结果
num num_formatted
2125551212 (212) 555-1212
212-555-1212 (212) 555-1212
(212)5551212 (212) 555-1212
点击此处SQLFiddle预览输出.
我将UPDATE声明作为读者的家庭作业.