代码之家  ›  专栏  ›  技术社区  ›  raupach

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

  •  3
  • raupach  · 技术社区  · 17 年前

    我们将Excel表格导入到SQL Server 2008中。遗憾的是,这些Excel文件的格式不符合预期。我们希望电话号码看起来像这样:“012345678”,没有前导和尾随空格,也没有空格。更糟糕的是,有时数字会用前缀“0123-2349823”或“0123/2349823”进行编码。

    CSV

    不过,知道如何用T-SQL做这样的事情还是很有趣的。

    3 回复  |  直到 15 年前
        1
  •  4
  •   Pawel Krakowiak    17 年前

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

    应该行得通。看起来不太好看。 ;)

        2
  •  2
  •   JFV    17 年前

    我会进行更新,并使用SQL的“替换”和LTrim/RTrim函数。

    Update Table1
    set phonenum = Case
            When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
                Else LTrim(RTrim(Replace(phonenum, '/', '')))
            End
    
        3
  •  0
  •   dance2die    17 年前

    “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