如何将手机号码拆分成国家代码、地区代码和本地号码?
例如:+919567123456 拆分后国家代码 = 91
地区代码 = 9567
本地号码 = 123456
如何将手机号码拆分成国家代码、地区代码和本地号码?
例如:+919567123456 拆分后国家代码 = 91
地区代码 = 9567
本地号码 = 123456
使用简单的算法无法解析电话号码,你需要使用填充有每个国家规则的数据表 - 因为每个国家对其电话号码进行不同的分隔。
国家代码相对容易,只需使用维基百科中的国际电话区号文章中的数据,并构建所有唯一国家代码的表格。每个国家都有一个唯一的前缀,所以这很容易。
但是,您需要查找每个要支持的国家的规则并使用每个国家的规则提取区号。
DECLARE @area_codes TABLE
(
country_code VARCHAR(10),
area_code VARCHAR(10),
country VARCHAR(20),
area VARCHAR(20),
match_string VARCHAR(MAX),
match_length INTEGER
)
INSERT INTO @area_codes VALUES ('44','1382','UK','Dundee', '441382%', 6)
INSERT INTO @area_codes VALUES ('44','1386','UK','Evesham', '441386%', 6)
INSERT INTO @area_codes VALUES ('44', '1', 'UK', 'Geographic numbers', '441%', 3)
DECLARE @number VARCHAR(MAX)
SET @number = '441386111111'
SELECT TOP 1 *
FROM @area_codes
WHERE @number LIKE match_string
ORDER BY match_length DESC
我认为你需要类似国家和地区代码的词典,因为两者长度可能不同。例如美国+1,德国+49,甚至是+6723。区号也是一样的。