Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
RastaYak Member Откуда: Сообщений: 4 |
Забыл приделать вложения. К сообщению приложен файл. Размер - 113Kb |
21 янв 14, 17:28 [15448279] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
*replace |
21 янв 14, 17:32 [15448305] Ответить | Цитировать Сообщить модератору |
RastaYak Member Откуда: Сообщений: 4 |
Cygapb-007, огромное спасибо! Я не учел один момент, есть короткие номера, 6-ти значные, как их исключить из этого процесса? Или дописать к ним +74932. |
21 янв 14, 17:38 [15448331] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
RastaYak Member Откуда: Сообщений: 4 |
Cygapb-007, я справился, огромное спасибо! |
21 янв 14, 18:48 [15448731] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |