如何在T-SQL中重写电话号码?

3

我有一个T-SQL初学者的问题。

我们将Excel表格导入了SQL Server 2008。很遗憾,这些Excel文件的格式不是应该的格式。我们希望电话号码看起来像这样:'012345678',没有前导和尾随的空格,也没有空格。更糟糕的是,有时号码会被编码为前缀'0123-2349823'或'0123/2349823'。

通常情况下,我会将Excel文件导出为CSV文件,然后启动一些神奇的Perl脚本进行清理,然后重新导入Excel文件。

但如果能用T-SQL完成这样的工作,那就很有趣了。

有什么想法吗?

3个回答

4

类似于

replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')

应该可以工作。看起来不太美观。;)

+1:哈,我想太多了。这比我建议的看起来更好。 ;) - dance2die
@nooomi:你说你喜欢Perl... :P - Pawel Krakowiak
我已经搜索了几个小时了。有时候,只需要尝试不同的搜索短语就可以解决问题。谢谢! - Mike S.

2

我会使用更新操作,使用SQL中的'Replace'和LTrim/RTrim函数。

Update Table1
set phonenum = Case
        When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
            Else LTrim(RTrim(Replace(phonenum, '/', '')))
        End

0

“Cleaned”仅包含数字值。

根据电话号码是否包含“-”、“/”,将它们替换为空字符串。

create table #t ( tel varchar(30) )

insert  #t select '0123-2349823' 
insert  #t select '0123/2349823'

select  tel,
        replace(tel, 
            case
                when patindex('%-%', tel) > 0 then '-'
                when patindex('%/%', tel) > 0 then '/'
            end, '') as Cleaned
from    #t

#t是什么?我以前从未见过这个。 - raupach
这是我用来测试的临时表,这样您就可以直接复制粘贴上面的代码,看看它在您的环境中是否可行。 - dance2die

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接