【问题标题】:SQL phone number data correcting xxx-xxx-xxxxSQL电话号码数据更正xxx-xxx-xxxx
【发布时间】:2014-03-20 17:37:15
【问题描述】:

我有一个 sql 查询,用于将电话号码从 Blackberry Enterprise Server 提取到资产类型的 sql 数据库中。我遇到的那个问题是BES没有标准化电话号码,有时会出现日志距离拨号代码1,非常随机。但在资产数据库中,我需要标准的xxx-xxx-xxxx 格式。这是我对该电话号码行的选择声明。这将电话号码限制为 10 个字符,但我还需要将破折号推送为 xxx-xxx-xxxx

SELECT RIGHT([PhoneNumber], 10) AS PhoneNumber.  

【问题讨论】:

  • 你用的是什么数据库?
  • 尝试使用不同的别名。
  • 您需要“将破折号作为 xxx-xxx-xxxx 推送”是什么意思?一些有问题的输出示例可能会有所帮助。
  • 我不会费心在数据库中格式化电话号码。这是一个显示问题,应该在客户端或渲染脚本中处理。

标签: sql select substring


【解决方案1】:

如果源中的破折号是一致的,那么您可以使用RIGHT(PhoneNumber,12)

如果不是,您应该删除破折号,取右 10,然后重新添加破折号:

SELECT SUBSTRING(RIGHT(REPLACE(PhoneNumber,'-',''),10),1,3)+'-'
      +SUBSTRING(RIGHT(REPLACE(PhoneNumber,'-',''),10),4,3)+'-'
      +SUBSTRING(RIGHT(REPLACE(PhoneNumber,'-',''),10),7,4)         

演示:SQL Fiddle

语法可能因数据库而异。

【讨论】:

  • 我想他是在问如何放入破折号,而不是取出它们。不过很难说。
  • 谢谢,这太完美了:SUBSTRING(RIGHT(REPLACE(PhoneNumber,'-',''),10),1,3)+'-' +SUBSTRING(RIGHT(REPLACE(PhoneNumber ,'-',''),10),4,3)+'-' +SUBSTRING(RIGHT(REPLACE(PhoneNumber,'-',''),10),7,4)
猜你喜欢
  • 2013-03-19
  • 2017-10-25
  • 2016-06-04
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 2014-03-01
  • 2012-11-20
  • 2016-12-24
相关资源
最近更新 更多