如果它是一个应该“实时”完成的查询,那么您的表格内容将不会是理想的(阅读:糟糕的性能)
也就是说,如果您知道所有国家/地区代码及其本地前缀(例如,瑞典的本地号码类似于092066666
将国家/地区前缀0
删除为+4692066666
.
CREATE TABLE country_codes (
id INT,
code VARCHAR(5),
local_prefix VARCHAR(5)
);
INSERT INTO country_codes VALUES
(1, '+46', '0'),
(2, '+91', '');
...然后您可以进行如下查询;
SELECT COUNT(DISTINCT
CASE WHEN SUBSTR(number,1,1) = '+'
THEN REPLACE(number,
(SELECT code
FROM country_codes
WHERE SUBSTR(number, 1, LENGTH(code)) = code),
(SELECT local_prefix
FROM country_codes
WHERE SUBSTR(number, 1, LENGTH(code)) = code))
ELSE number
END) "distinct numbers"
FROM numbers;
一个用于测试的 SQLfiddle。