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

我们将Excel表格导入SQL Server 2008.太糟糕了,这些Excel文件的格式没有按照应有的格式进行。我们希望电话号码看起来像这样:'012345678',没有前导和尾随空格,内部没有空格。更糟糕的是,有时候这个数字会用前缀'0123-2349823'或'0123/2349823'编码。

通常我会将Excel文件导出到 CSV 文件,然后启动一些魔术Perl脚本进行清理,然后重新导入Excel文件。

知道如何用T-SQL做这样的事情仍然很有趣。

有什么想法吗?

有帮助吗?

解决方案

这样的东西
replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')

应该有效。看起来不漂亮。 ;)

其他提示

我会更新并使用SQL的'Replace'和LTrim / RTrim函数。

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

"清理"仅包含数值

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

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top