Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Приведение телефонов в базе к одному формату.  [new]
RastaYak
Member

Откуда:
Сообщений: 4
Всем добрый день.
Мне нужна помощь в написании скрипта, задача следующая - в таблице 19 тысяч номеров телефонов, в виде 8-903-333-33-33, 8(903)333-33-33, 89033333333 и так далее, а надо, что бы все стало вида +79033333333. Сделать это в Экселе я могу за 15 минут, а от SQL я ОЧЕНЬ далекий человек, а саппорт ПО, которое использует базу, сказал "у нас такой функции нет, пишите запрос сами, если вам надо".
Точная версия SQL в аттаче.
БД называется - CBaseCRM_Fresh_5x (от программы FreshOffice).
Список полей и название таблицы - тоже в аттаче.

На всякий случай расскажу, зачем мне оно надо - этот самый фрешоффис установлен у секретаря на ресепе, и когда ей звонит наш клиент, у нее на мониторе сразу открывается карточка клиента и она может что-то с ней сделать, пометки, задачи и так далее. Так как IP-АТС выдает номер вида +79033333333, то в 99% случаев ФрешОффис не понимает, какой клиент нам позвонил.
21 янв 14, 17:27    [15448273]     Ответить | Цитировать Сообщить модератору
 Re: Приведение телефонов в базе к одному формату.  [new]
RastaYak
Member

Откуда:
Сообщений: 4
Забыл приделать вложения.

К сообщению приложен файл. Размер - 113Kb
21 янв 14, 17:28    [15448279]     Ответить | Цитировать Сообщить модератору
 Re: Приведение телефонов в базе к одному формату.  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
select tel, stuff(repalce(repalce(repalce(tel,'-',''),'(',''),')',''),1,1,'+7')
from myTable

Если результат удовлетворит, то
update myTable set tel=stuff(repalce(repalce(repalce(tel,'-',''),'(',''),')',''),1,1,'+7')
21 янв 14, 17:31    [15448299]     Ответить | Цитировать Сообщить модератору
 Re: Приведение телефонов в базе к одному формату.  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
*replace
21 янв 14, 17:32    [15448305]     Ответить | Цитировать Сообщить модератору
 Re: Приведение телефонов в базе к одному формату.  [new]
RastaYak
Member

Откуда:
Сообщений: 4
Cygapb-007,

огромное спасибо! Я не учел один момент, есть короткие номера, 6-ти значные, как их исключить из этого процесса? Или дописать к ним +74932.
21 янв 14, 17:38    [15448331]     Ответить | Цитировать Сообщить модератору
 Re: Приведение телефонов в базе к одному формату.  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
select m.tel, case len(f.tel) when 6 then '+74932'+f.tel else stuff(f.tel,1,1,'+7') end f_tel
from myTable m
cross apply (select replace(replace(replace(tel,'-',''),'(',''),')',''))f(tel)

update m set m.tel=case len(f.tel) when 6 then '+74932'+f.tel else stuff(f.tel,1,1,'+7') end 
from myTable m
cross apply (select replace(replace(replace(tel,'-',''),'(',''),')',''))f(tel)
21 янв 14, 17:46    [15448372]     Ответить | Цитировать Сообщить модератору
 Re: Приведение телефонов в базе к одному формату.  [new]
RastaYak
Member

Откуда:
Сообщений: 4
Cygapb-007,

я справился, огромное спасибо!
21 янв 14, 18:48    [15448731]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить