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

Откуда:
Сообщений: 116
добрый день. Требуется из записей типа
ОДН_Москва_КЛЛ_ККМ/ПД_ОКЛ_ИН
ДП_Норильск_КЛЛ_ГН/АП_ОКГ_ТП

выбрать в столбец данные идущие после третьего и четвертого _ т.е.
в результате
ККМ/ПД
ГН/АП

знаю в MySQL есть функция substring_index а как сделать такое в MSSQL? Есть ли какая то функция, чтобы не писать большой код с переменными итп.. как в интернете предлагают ?
30 май 17, 20:13    [20525195]     Ответить | Цитировать Сообщить модератору
 Re: Есть л простая альтернатива substring_index в ms sql ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30821
Romanov-krd
Есть ли какая то функция, чтобы не писать большой код с переменными итп.. как в интернете предлагают ?
Нет
30 май 17, 20:27    [20525241]     Ответить | Цитировать Сообщить модератору
 Re: Есть л простая альтернатива substring_index в ms sql ?  [new]
LoopN
Guest
select cast('<r>'+REPLACE(t,'_','</r><r>')+'</r>' as xml).query('r[4]').value('.','varchar(400)')
from (VALUES('ОДН_Москва_КЛЛ_ККМ/ПД_ОКЛ_ИН'),('ДП_Норильск_КЛЛ_ГН/АП_ОКГ_ТП')) T(t)
30 май 17, 21:02    [20525323]     Ответить | Цитировать Сообщить модератору
 Re: Есть л простая альтернатива substring_index в ms sql ?  [new]
LoopN
Guest
select cast('<r>'+REPLACE(t,'_','</r><r>')+'</r>' as xml).value('r[4]','varchar(400)')
from (VALUES('ОДН_Москва_КЛЛ_ККМ/ПД_ОКЛ_ИН'),('ДП_Норильск_КЛЛ_ГН/АП_ОКГ_ТП')) T(t)
30 май 17, 21:05    [20525329]     Ответить | Цитировать Сообщить модератору
 Re: Есть л простая альтернатива substring_index в ms sql ?  [new]
invm
Member

Откуда: Москва
Сообщений: 9128
Romanov-krd
Есть ли какая то функция, чтобы не писать большой код с переменными итп.. как в интернете предлагают ?
Как уже ответили - функции нет. Но и писать "большой код" вовсе не обязательно:
declare @t table (s varchar(50));

insert into @t
values
 ('ОДН_Москва_КЛЛ_ККМ/ПД_ОКЛ_ИН'),
 ('ДП_Норильск_КЛЛ_ГН/АП_ОКГ_ТП');

select
 t.s, b.n.value('item[4]', 'varchar(50)')
from
 @t t cross apply
 (select cast('<item>' + replace(s, '_', '</item><item>') + '</item>' as xml)) a(x) cross apply
 a.x.nodes('/') b(n);
30 май 17, 21:12    [20525347]     Ответить | Цитировать Сообщить модератору
 Re: Есть л простая альтернатива substring_index в ms sql ?  [new]
LoopN
Guest
invm,
У меня varchar длинее
30 май 17, 22:00    [20525424]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить