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

Откуда: Симферополь
Сообщений: 540
Господа помогите пожалуйста обрезать в строках в
select NameArticle1 from article
данные.

Данные которые сейчас есть:
10417 - НАПІЙ КУЛА ДЮШЕС ФРУТ-АЙС ШТ/1,5Л/6
10416 - НАПІЙ КУЛА ЛИМОНАД ФРУТ-АЙС ШТ/1,5Л/6
18112 - НАПІЙ КУЛА БУРАТІНО ФРУТ-АЙС ШТ/1,5Л/6

Данные которые должны быть:
НАПІЙ КУЛА ДЮШЕС ФРУТ-АЙС ШТ/1,5Л/6
НАПІЙ КУЛА ЛИМОНАД ФРУТ-АЙС ШТ/1,5Л/6
НАПІЙ КУЛА БУРАТІНО ФРУТ-АЙС ШТ/1,5Л/6

Т.е. надо слева убрать код и символ - с пробелом

Заранее благодарен
7 янв 12, 13:35    [11867410]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг слова  [new]
Andrey Sribnyak
Member

Откуда: Киев
Сообщений: 600
Andrew_vb1110,

	  declare @t as table (tt  nvarchar(50))
	  insert into @t values (N'10417 - НАП_Й КУЛА ДЮШЕС ФРУТ-АЙС ШТ/1,5Л/6'),
	  (N'10416 - НАП_Й КУЛА ЛИМОНАД ФРУТ-АЙС ШТ/1,5Л/6'),
	(N'18112 - НАП_Й КУЛА БУРАТ_НО ФРУТ-АЙС ШТ/1,5Л/6')

	select tt, SUBSTRING(tt, n+3, LEN(tt)-n-3)
	from
	(
		select *, patindex('% - %',tt) n
		from @t
	)t
7 янв 12, 14:21    [11867472]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг слова  [new]
Andrew_vb1110
Member

Откуда: Симферополь
Сообщений: 540
Andrey Sribnyak,
спасибо...
7 янв 12, 14:34    [11867485]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг слова  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
select *, stuff( tt, 1, patindex('% - %',tt) + 2, '')  from @t
7 янв 12, 15:41    [11867600]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг слова  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
А чтобы избежать неприятных сюрпризов, лучше так:
select *, stuff( tt, 1, isnull(nullif(patindex('% - %',tt), 0) + 2, 0), '')  from @t
7 янв 12, 15:47    [11867610]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг слова  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
select *, stuff( tt, 1, patindex('% [а-я]%',tt), '')  from @t
7 янв 12, 16:00    [11867647]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг слова  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Knyazev Alexey
select *, stuff( tt, 1, patindex('% [а-я]%',tt), '')  from @t
select *, stuff( tt, 1, nullif(patindex('%[^0-9 -]%',tt),0)-1, '') from @t
7 янв 12, 16:04    [11867654]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг слова  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
iap
Knyazev Alexey
select *, stuff( tt, 1, patindex('% [а-я]%',tt), '')  from @t
select *, stuff( tt, 1, nullif(patindex('%[^0-9 -]%',tt),0)-1, '') from @t

ага, так лучше :)
7 янв 12, 16:15    [11867688]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг слова  [new]
Andrew_vb1110
Member

Откуда: Симферополь
Сообщений: 540
Knyazev Alexey, спасибо огромное. Очень красивое решение.
8 янв 12, 09:45    [11869632]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить