gpt4 book ai didi

SQL 处理电话号码字段中的垃圾

转载 作者:行者123 更新时间:2023-12-04 14:17:57 24 4
gpt4 key购买 nike

我今天要解决一个非常有趣的小 SQL 问题,我想我会请社区看看你想出了什么解决方案。

我们有一个非常酷的电子邮件到我们使用的文本服务,您只需向 phonenumber@servicename.com 发送一封电子邮件,它就会向所需的电话号码发送一条短信。

比如发短信到 0790 0006006,你需要发邮件到 07900006006@servicename.com,很不错吧?

问题出在我们数据库中的电话号码上。大多数电话号码都很好,但其中一些电话号码中混杂了“垃圾”。

以这些您需要处理的垃圾为例(我通过在其中放置零来匿名化电话号码):

07800 000647(mobile)
07500 000189 USE 1ST
SEE NOTES
07900 000415 HO ONLY
try 1st 0770 0000694 then home
07500 000465 Cannot



要求

解决方案需要在 SQL 中(对于 MS SQL 服务器)。

所以挑战如下,我们需要得到没有空格的电话号码,并且没有样本中看到的任何垃圾。

例如:

这个:

try 1st 0770 0000694 then home



应该变成这样:

07700000694



任何没有电话号码的东西(例如“SEE NOTES”)都应该是空的。

更新:

感谢您的精彩回复!我们得到了一些有趣的答案,但由于没有一个 SQL 答案获得任何投票,因此很难选出最喜欢的答案。我宁愿看到社区挑选的一个明显的最爱。

我会让这个问题更成熟一点,在我给出答案之前看看是否有任何投票进来。

最佳答案

假设 yopur 手机总是以 '07' 开头并且长度为 12 个字符,您可以尝试这样的操作:

DECLARE @Number varchar(50)

--SET @Number='07800 000647(mobile)'
--SET @Number='07500 000189 USE 1ST'
--SET @Number='SEE NOTES'
--SET @Number='07900 000415 HO ONLY'
--SET @Number='try 1st 0770 0000694 then home'
SET @Number='07500 000465 Cannot '



SELECT REPLACE(SUBSTRING(@Number, case when CHARINDEX ('07',@Number ) =0 then Null
else CHARINDEX ('07',@Number )end , 12),' ','')

首先,找到'07'字符串的起始点,然后,如果是0('SEE NOTES'),则返回Null。之后,获取数字的12个字符。
最后,替换空格...

关于SQL 处理电话号码字段中的垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2645558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com