我正在SQL Server 2008 R2中为一个类构建一个示例数据库,并用虚拟数据填充它我可以创建存储过程等。
我想创建的其中一个是将所有电话号码(所有美国,10位数格式)更改为(XXX)XXX-XXXX。
我故意以不同的方式输入一组电话号码,并希望将它们全部格式化为上面列出的标准格式,因此无论数字在数据库中输入的是什么样式,它们都会正确格式化。
我甚至不知道如何开始这个。我还是SQL新手。另外......我正在拉数据库中的所有电话号码,而不只是从一个表中提取。
CREATE PROC spPhoneNumberFormat
AS
Select Employees.Phone, Vendors.Phone, Vendors.AltPhone
From Employees join Vendors on employees.ID = vendors.ID
希望你们都能帮忙吗?
答案 0 :(得分:1)
由于我不知道美国电话号码的格式,我只能提供有关如何解析和处理字符串的基本说明。
您可以使用 REPLACE(1,2,3)将字段解析为基本格式XXXXXXXXXX。 在替换中,1是您正在处理的完整字符串,2是您要替换的部分,3是您要替换它的部分。因此,您可以使用REPLACE(PHONENUM,'+','')删除加号。您可以组合REPLACE函数甚至在某种程度上使用REGEX来同时解析多个不同的字符,字符串等。 Google将为您提供有关如何使用的说明。
如果您的电话号码格式为XXXXXXXXXX,则可以使用子字符串等功能重新格式化。 IE:
SELECT '('+SUBSTRING(PHONENUM,1,3)+')'+SUBSTRING(PHONENUM,4,6)+'-'+SUBSTRING(PHONENUM,7,LEN(PHONENUM))
哪会将XXXXXXXXXX更改为(XXX)XXX-XXXX。
尝试并测试这些,你应该立刻让它工作。 :)
答案 1 :(得分:0)
请尝试
http://www.codeproject.com/Articles/20596/Telephone-Numbers-in-SQL-Server-2005-Part-2-Format
http://bytes.com/topic/sql-server/answers/705833-phone-number-conversion-xxxxxxxxx
http://www.sqlservercurry.com/2010/11/format-phone-numbers-in-sql-server.html
http://www.sqlservercentral.com/Forums/Topic698934-338-2.aspx
http://forums.devshed.com/ms-sql-development-95/format-phone-number-253468.html
http://www.katieandemil.com/t-sql-yyyymmdd
我希望
是的 对你有帮助
答案 2 :(得分:0)
在SQL Server 2008的版本中,我有(r2)FBSDKLoginKit.framework
函数的参数实际上是substring
。因此,适当的查询要更改' XXXXXXXXXX'到'(XXX)XXX-XXXX'是:
(stringname, start location, length)
限定符update [TableName]
set [phone] = '('+substring([phone],1,3)+')'+substring([phone],4,3)+'-'+substring([phone],7,4)
where len([phone]) = 10
将阻止更改任何超过十个字符的记录 - 这可确保您的电话号码在连续两次意外运行查询时不会受到污染。