【问题标题】:Formatting the number field in SQL for Reporting格式化 SQL 中的数字字段以进行报告
【发布时间】:2015-09-03 15:05:37
【问题描述】:

目前我有一个存储客户详细信息的表格,但是表格中的电话号码字段输入不同:

ID | Name |Address |DOB         | Gender |Phone Number   |
---------------------------------------------------------
01 | Max  |Abc Road| 2000-12-19 | Male   |07777 893 8902 |
02 | Sam  |TBH Road| null       | Male   |077778938902   |
03 | Doe  |Dr  Road| 1999-11-13 | Male   |077778 938902  |

但是,是否可以重新格式化电话号码字段,以便结果如下所示:

ID | Name |Address |DOB         | Gender |Phone Number   |
---------------------------------------------------------
01 | Max  |Abc Road| 2000-12-19 | Male   |07777 893 8902 |
02 | Sam  |TBH Road| null       | Male   |07777 893 8902 |
03 | Doe  |Dr  Road| 1999-11-13 | Male   |07777 893 8902 |

同样出于报告和导出的原因,是否可以确保电话号码前面的0出现?

非常感谢任何帮助 - 谢谢 :)

【问题讨论】:

  • 首先,告诉我们您要连接的数据库类型。

标签: sql excel formatting reporting phone-number


【解决方案1】:

试试这个

DECLARE @TmpTbl TABLE (PhoneNumber varchar(20))
INSERT INTO @TmpTbl
SELECT
    '07777 893 8902' 
    UNION ALL SELECT '077778938902'
    UNION ALL SELECT '077778 938902'

select
CONCAT(LEFT(replace(PhoneNumber,' ',''),5)
       ,' '
       ,SUBSTRING(replace(PhoneNumber,' ',''),6,3)
       ,' '
       ,RIGHT(replace(PhoneNumber,' ',''),4))
from @TmpTbl

或者这也可以代替 CONCAT 语句

Stuff(Stuff(REPLACE(PhoneNumber,' ',''),9,0,' '),6,0,' ')

输出:

07777 893 8902
07777 893 8902
07777 893 8902

【讨论】:

  • 完美!你打败了我。
猜你喜欢
  • 2013-01-08
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多