Rei*_*ica 5 sql sql-server-2005
我今天有一个非常有趣的小SQL问题需要解决,并且我想让社区看看你提出了什么解决方案.
我们有一个非常酷的电子邮件到我们使用的文本服务,您只需要发送电子邮件到phonenumber@servicename.com,它将发送短信到所需的电话号码.
例如要发送文本到0790 0006006,你需要发一封电子邮件到07900006006@servicename.com,非常整洁吧?
问题在于我们数据库中的电话号码.大多数电话号码都很好,但其中一些电话号码中混有"垃圾".
拿这些你需要处理的垃圾的精彩例子(我通过放置零来匿名化电话号码):
07800 000647(手机)
07500 000189使用1ST请
注意
07900 000415 HO ONLY
尝试第1次0770 0000694然后回家
07500 000465不能
要求
解决方案需要在SQL中(对于MS SQL服务器).
所以挑战如下,我们需要获得没有空格的电话号码,并且没有样本中看到的任何垃圾.
例如:
这个:
尝试第1次0770 0000694然后回家
应该成为这样的:
07700000694
任何没有电话号码的东西(例如"SEE NOTES")都应该为空.
更新:
感谢您的好评!我们有一些有趣的答案,但由于没有任何SQL答案有任何投票,所以选择一个最喜欢的东西有点困难.我宁愿看到社区挑选出的明显喜爱.
在我给出答案之前,我会让问题成熟一点,看看是否有任何投票.
小智 2
假设 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),' ','')
Run Code Online (Sandbox Code Playgroud)
首先,找到'07'字符串的起始点,然后,如果它是0('SEE Notes'),则返回Null。之后,获取该数字的 12 个字符。最后,替换空格...
归档时间: |
|
查看次数: |
1598 次 |
最近记录: |