2015-10-05 39 views
0

我的电话号码存储在我的用户表中phone列下。它们被格式化为一整串数字,而不是破折号。像这样:8005550012.mysql将电话号码分成可识别的字段

是否有办法抓取电话号码,并将其拆分为3个字段,如area_code,prefixnumber

我尝试使用类似SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(phone, ' ', 1), ' ', -1) AS area_code,等等,但它并不漂亮,我不认为它是正确的。

+0

难道他们总是格式化呀?没有'+ 18005550012','(800)5550012'等? –

+0

是的,永远。没有国际代码。 –

+0

您的子串解决方案是使用的解决方案。您可以编写3个函数来完成这项工作,以便您的SQL语句看起来更容易理解。 –

回答

3

MID()你喜欢这样就能做到:

create table test (phone varchar(50)); 
insert into test values ('8005550012'); 
select 
    mid(phone, 1, 3) as areacode, 
    mid(phone, 4, 3) as prefix, 
    mid(phone, 7, 4) as phonenumber 
from test; 

Result: 
areacode | prefix | phonenumber 
800  | 555 |  0012 
+0

美丽!非常感谢。 –

+0

这是完美的 –

相关问题