2013-11-21 5 views
0

Я создаю образец базы данных в SQL Server 2008 R2 для класса и заполнил его фиктивными данными. Я могу создавать хранимые процедуры и т. Д.Изменение всех телефонных номеров SQL

Один из sprocs, который я хочу создать, - это изменить все номера телефонов (все американские, 10-значный формат), чтобы они выглядели (XXX) XXX-XXXX.

Я намеренно вошел в группу телефонных номеров в разных моделях и хочу, чтобы их формат sproc полностью соответствовал стандартным форматам, указанным выше, поэтому независимо от того, какой стиль вводится в базу данных, они правильно отформатированы.

Я даже не знаю, как это начать. Я действительно все еще новичок в SQL. ТАКЖЕ ... Я забираю все номера телефонов в базе данных, а не только из одной таблицы.

CREATE PROC spPhoneNumberFormat 
AS 

Select Employees.Phone, Vendors.Phone, Vendors.AltPhone 
From Employees join Vendors on employees.ID = vendors.ID 

Надеюсь, что вы все можете помочь?

+0

Каков тип данных, который вы использовали для столбца 'PhoneNumber'? – MusicLovingIndianGirl

+0

varchar (20) Я думал, что оставил его в 10. Мне придется это отредактировать. –

+0

Да, измените его на 'varchar (20)' или больше и попробуйте. – MusicLovingIndianGirl

ответ

0
0

Так как я понятия не имею, которые появляются в формате Американский номера телефонов, я могу только предоставить вам основные инструкции о том, как анализировать и обрабатывать строки.

Вы можете использовать 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.

Попробуйте протестировать их, и вы должны заставить его работать в кратчайшие сроки. :)

0

В версии SQL Server 2008 у меня есть (r2), кажется, что параметры функции substring на самом деле (stringname, start location, length).Поэтому соответствующий запрос, чтобы изменить «XXXXXXXXXX» до «(XXX) XXX-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) предотвратит изменение какой-либо записи с более чем десять символов - что обеспечивает ваши телефонные номера не будут если вы случайно запускаете запрос дважды подряд.

Смежные вопросы