更改所有电话号码SQL



我正在SQL Server 2008 R2中为一个类构建一个示例数据库,并用可以创建存储过程等的伪数据填充它。

我想创建的sproc之一是将所有电话号码(全部为美国,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

希望你们都能帮忙?

在SQL Server 2008版本中,substring函数的参数似乎实际上是(stringname, start location, length)。因此,将"XXXXXXXXXX"更改为"(XXX)XXXX-XXXX"的适当查询是:

update [TableName]
set [phone] = '('+substring([phone],1,3)+')'+substring([phone],4,3)+'-'+substring([phone],7,4)
where len([phone]) = 10

限定符(where len([phone]) = 10)将防止更改任何超过十个字符的记录,这可以确保如果您意外连续两次运行查询,您的电话号码不会被污染。

由于我不知道美国电话号码的格式,我只能为您提供如何解析和处理字符串的基本说明。

您可以使用REPLACE(1,2,3)将字段解析为其基本形式XXXXXXXXXX。在替换中,1是您正在处理的完整字符串,2是要替换的部分,3是要替换它的部分。例如,您可以使用REPLACE(PHONENUM,'+','')来删除加号。您可以组合REPLACE函数,甚至在某种程度上使用REGEX来同时解析多个不同的字符、字符串等。谷歌将为您提供如何操作的说明。

当你有XXXXXXXXXX格式的电话号码时,你可以使用子字符串等功能来重新格式化

SELECT '('+SUBSTRING(PHONENUM,1,3)+')'+SUBSTRING(PHONENUM,4,6)+'-'+SUBSTRING(PHONENUM,7,LEN(PHONENUM))

将XXXXXXXXXX更改为(XXX)XXXX-XXXX。

试着测试一下,你应该很快就能让它发挥作用。:)

请尝试

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

我希望

是的对您有帮助

最新更新