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

Откуда:
Сообщений: 466
Добрый день!!!


В таблицу T1 приходит номер телефона в след. виде (+7-ххх-хх-хх или 8-ххх-хх-хх)
Мне надо сделать выборку , чтоб первый символ +7 или 8 заменялся на 7



Заранее благодарен!!
25 дек 09, 11:24    [8117592]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пожалуйста !!!  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Строковые функции (Transact-SQL)
25 дек 09, 11:33    [8117646]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пожалуйста !!!  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
CASE+LEFT/SUBSTRING+SUBSTRING
25 дек 09, 11:33    [8117648]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пожалуйста !!!  [new]
ИльдарSR
Member

Откуда:
Сообщений: 466
Делаю примерно так :

declare
@a_number varchar(125)
set @a_number = '892666666'
SELECT (SUBSTRING(@a_number,1,1)+ SUBSTRING(@a_number,2,1))


А как заменит (REPLACE)
25 дек 09, 11:45    [8117754]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пожалуйста !!!  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Рекомендую автору составить на русском языке, по шагам
алгоритм необходимого преобразоавания номера телефона
Если и после этого будут трудности - выкладывайте свой алгоритм сюда, перевести на TSQL поможем
25 дек 09, 11:49    [8117784]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пожалуйста !!!  [new]
ИльдарSR
Member

Откуда:
Сообщений: 466
select @a_number =
case
when LEFT(@a_number, 1) = '8' then '7' + SUBSTRING(@a_number, 2, 12)
when LEFT(@a_number, 2) = '+7' then '7' + SUBSTRING(@a_number, 3, 12)
else @a_number
end


Что то типо такого получилось вроде работает.


Всем спасибо!!!
25 дек 09, 12:11    [8117940]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пожалуйста !!!  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
declare @a_number varchar(125);
set @a_number = '892666666';
SELECT STUFF('+'+@a_number,1, PATINDEX('%+[78]%','+'+@a_number)+1,'7');
25 дек 09, 12:13    [8117951]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пожалуйста !!!  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
declare @a_number varchar(125);
set @a_number = '892666666';
SELECT STUFF('+'+@a_number,1, PATINDEX('%+[78]%','+'+@a_number)+1,'7');
Как всегда, SP1:
declare @a_number varchar(125);
set @a_number = '592666666';
SELECT ISNULL(STUFF('+'+@a_number,1, NULLIF(PATINDEX('%+[78]%','+'+@a_number),0)+1,'7'),@a_number);
25 дек 09, 12:35    [8118125]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пожалуйста !!!  [new]
aleks2
Guest
SELECT REPLACE(REPLACE('+'+a_number, '+8', '7'), '+','')
from
( 
select '592666666' a_number
union all
select '8592666666'
union all
select '7592666666'
union all
select '+7592666666'
) X
25 дек 09, 13:12    [8118384]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить