如何在T-SQL中重写电话号码?
-
03-07-2019 - |
题
我在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
不隶属于 StackOverflow