用于从电话号码

时间:2015-11-19 22:20:26

标签: sql sql-server regex

我正在使用数据仓库,我需要从电话号码列中删除一堆案例,以便能够将其用作查找其他数据源。数据的一些情况:

888-888-8888 --->应该是888888888
(888)888-8888 --->应该是888888888
888.888.8888 --->应该是888888888
888-888-888转888 --->应该是888888888
1-888-888-888 --->应该是888888888
888 88 8888 888888 --->应该是888888888888888

我能够做多个替换语句来摆脱像 - ,。,(,)这样的简单字符。我遇到问题的部分是删除'ext 888'和'1-',其中数字以'1-'开头(不包含)。 888可以是任何数字,也可以是任意数量的数字。处理用户输入的信息和多个国家/地区。

我可以在SQL中编写哪些可以完成最后两部分的内容吗?

1 个答案:

答案 0 :(得分:1)

'ext 888'可以修复: -

select STUFF('1-888-888-888 ext 888', PATINDEX('%ext [0-9][0-9][0-9]%', '1-888-888-888 ext 888'),8,'')

对于以1开头的部分,您可以尝试: -

select STUFF('1-888-888-888',1,2,'')

在这两个示例中,您都会将“1-888-888-888 ....”部分替换为列名。