我的电话号码存储在我的用户表中phone
列下。它们被格式化为一整串数字,而不是破折号。像这样:8005550012.mysql将电话号码分成可识别的字段
是否有办法抓取电话号码,并将其拆分为3个字段,如area_code
,prefix
和number
?
我尝试使用类似SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(phone, ' ', 1), ' ', -1) AS area_code,
等等,但它并不漂亮,我不认为它是正确的。
我的电话号码存储在我的用户表中phone
列下。它们被格式化为一整串数字,而不是破折号。像这样:8005550012.mysql将电话号码分成可识别的字段
是否有办法抓取电话号码,并将其拆分为3个字段,如area_code
,prefix
和number
?
我尝试使用类似SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(phone, ' ', 1), ' ', -1) AS area_code,
等等,但它并不漂亮,我不认为它是正确的。
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
美丽!非常感谢。 –
这是完美的 –
难道他们总是格式化呀?没有'+ 18005550012','(800)5550012'等? –
是的,永远。没有国际代码。 –
您的子串解决方案是使用的解决方案。您可以编写3个函数来完成这项工作,以便您的SQL语句看起来更容易理解。 –