php - 选择不同的数字 sql Cakephp

标签 php mysql sql cakephp cakephp-2.0

我有一个名为消息的表,其中有一个字段名称手机号码。 数字采用以下格式:

12345678+9112345678 ..所以它们都是相同的..唯一的区别是在一个数字中缺少国家/地区代码。

所以我在数据库中查询

select the **distinct** numbers from messages tables..

现在它将这两个数字视为不同..但我想要的是将这两个数字视为一个。
我该如何执行此操作?并且在我的数据库中有多个具有不同国家/地区代码的号码。有些有国家/地区代码,有些没有,但我想将两者合而为一。一个有国家代码,另一个没有国家代码。怎么办?

最佳答案

如果这是一个应该“实时”完成的查询,那么您的表内容将不会很理想(阅读:糟糕的性能)

也就是说,如果您知道所有国家/地区代码及其本地前缀(例如,瑞典的本地号码类似于 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;

An SQLfiddle to test with .

关于php - 选择不同的数字 sql Cakephp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484940/

相关文章:

mysql - 我在尝试添加外键时不断收到错误,我做错了什么?

PHP 为 Smarty 选择

php - 随机和独特的子集生成

php - 在 ListView 中显示从 .php 脚本接收到的数据

mysql - 将 DISTINCT 添加到 UNION 查询

php - mysql 从 T1 选择(如果不在 T2 中),否则替换

mysql - MySQL 中 MATCH ('...' IN NATURAL LANGUAGE MODE) 的最大可能取值范围是多少?

sql - Django prefetch_related 与限制

php - SQL语法错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 'WHERE id = ' 9'' 附近使用的正确语法

mysql - 如何在 MySQL 中返回数据透视表输出?