首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据起始系列验证现有手机号码

根据起始系列验证现有手机号码
EN

Stack Overflow用户
提问于 2019-11-15 13:52:50
回答 3查看 191关注 0票数 0

我有超过50K的手机号码,我需要验证所有的号码,无论这些是有效的号码或不是根据印度手机号码系列。我已经从维基百科下载了印度手机号码系列,并将它们存储在另一个表中名为series的列中。现在我想一次验证所有的数字,请提供任何更快的标准查询,并在最佳计划执行。

例如系列为: 6000,6001,6002,9977,9947

下面是手机号: 1241124154,6011101101,8414141401,6014141410,9947256585

请注意,上面的数字是随机输入的,这些数字与我记录中的数字无关。这个数字的任何相似之处/存在都只是巧合。

EN

回答 3

Stack Overflow用户

发布于 2019-11-15 14:03:31

既然您可以使用号码的已知前缀来确定有效的电话匹配,那么您应该能够只对电话号码列建立索引,然后运行如下所示的命令:

代码语言:javascript
复制
SELECT *
FROM yourTable
WHERE
    phone LIKE '6000%' OR
    phone LIKE '6002%' OR
    phone LIKE '9977%' OR
    phone LIKE '9947%';

如果您有许多可能的电话前缀需要检查,那么我建议使用以下方法。首先,根据只包含前缀的电话号码创建一个新列。您可以在当前表中执行此操作,或者,如果您不想/不能更改当前模式,则可以创建一个临时表。接下来,创建一个只包含单个列的新表。使用您的4000个实际有效电话前缀填充此表,然后为此电话列编制索引。现在,下面的查询应该非常快:

代码语言:javascript
复制
SELECT t1.phone
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM prefixes t2 WHERE t2.prefix = t1.prefix);

您的SQL数据库应该能够使用索引来满足WHERE子句,并使查询快速执行。

票数 0
EN

Stack Overflow用户

发布于 2019-11-15 14:45:11

使用类似这样的东西,如果您在tblmobileseries表中有移动主表名称tblmobile和series,则以下是您的解决方案的示例查询

代码语言:javascript
复制
SELECT mobileno,
(case when exists(select tm.mobileno 
                  from tblmobile tm, tblmobileseries tms 
                  where tm.mobileno Like tms.series + '%')
      then 'VALID' 
      else 'Not Valid' end
) as ISValid 
from tblmobileno
票数 0
EN

Stack Overflow用户

发布于 2019-11-15 23:49:17

Select M.Mobile,Case When Exists (Select 1 from SeriesT T where Left(M.Mobile,4)=T.Series)然后'Valid‘否则'Invalid’End as Result From DM M

DM-手机号码系列表T-手机号码系列表

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58871083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档