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

Откуда:
Сообщений: 238
Что-то не пойму у меня есть строки в таблице вида "Абракадабра №75675675 Абракадабра"
мне надо заменить то что начинается на № и заканчивается пробелом. На скажем 111
как это сделать? может кто знает... Буду признателен.
24 сен 15, 14:53    [18190138]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подстроку если не знаешь сколько в ней символов  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
DNShark
как это сделать?
Найти позицию №. Найти позицию пробела, начиная с найденной позиции №.
Вызвать функцию stuff для получения требуемого.
24 сен 15, 14:58    [18190167]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подстроку если не знаешь сколько в ней символов  [new]
Glory
Member

Откуда:
Сообщений: 104751
DNShark
как это сделать?

Найти позицию начала подстроки
Найти позицию конца подстроки
Заменить подстроку с "начала" до "конца" на нужную
24 сен 15, 14:59    [18190177]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подстроку если не знаешь сколько в ней символов  [new]
DNShark
Member

Откуда:
Сообщений: 238
Спасибо, попробую
24 сен 15, 15:01    [18190195]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подстроку если не знаешь сколько в ней символов  [new]
DNShark
Member

Откуда:
Сообщений: 238
хм написал

Select message,CHARINDEX ( '№' ,message),CHARINDEX ( ' ' ,message,CHARINDEX ( '№' ,message)) from MyTable


хм, а у меня если вместо пробела конец строки, то возвращает 0. а есть какой-то символ конца строки?
24 сен 15, 15:06    [18190224]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подстроку если не знаешь сколько в ней символов  [new]
Glory
Member

Откуда:
Сообщений: 104751
DNShark
а есть какой-то символ конца строки?

К любой строке можно прибавить еще символ(ы)
24 сен 15, 15:08    [18190236]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подстроку если не знаешь сколько в ней символов  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
declare @ varchar(1000) = 'Абракадабра №75675675 Абракадабра';

declare @t table (s varchar(1000));
insert into @t
values
 ('Абракадабра №75675675 Абракадабра'),
 ('Абракадабра №75675675'),
 ('Абракадабра 75675675');

select
 s, isnull(stuff(t.s, a.p, b.p - a.p, '111'), t.s)
from
 @t t cross apply
 (select charindex('№', t.s)) a(p) cross apply
 (select isnull(nullif(charindex(' ', t.s, a.p), 0), 2147483647)) b(p);
24 сен 15, 15:27    [18190361]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить