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

Откуда:
Сообщений: 6
Добрый день спецам.

Есть задачка вытащить часть поля из одной колонки, потом засунуть ее в качестве части поля в другую колонку (или, хотя бы, в новую колонку).
Я справлюсь с инсертом, но первая часть задачи вызывает некоторое... жжение.

Подробнее.
Чтобы вытащить часть поля, использую такой костыль:
declare @rownum varchar(100)
set @rownum=1
select substring([Основание возникновения права собственности СПб], 
	(Select charindex('$', [Основание возникновения права собственности СПб]) from 
		(
	 Select ROW_NUMBER() OVER ( order by Id_kugireestr) as 'Row_Number', * 
		from KUGIReestr
		) as tbl
	Where tbl.Row_Number = @rownum), 300)as 'Этаж' from kugireestr


И его результат примерно такой:
+
$2 этаж$78-78-01/0206/2009-114$15.05.2009
$2 этаж$78-78-01/0393/2009-376$02.07.2009
$1 этаж$78-01-9507/2004-334.2$26.07.2004
$$40000003$03.10.1997
$подвал$141012.1$17.03.1999
$1 этаж$78-78-01/0222/2009-456$22.05.2009


Мне очень хотелось бы использовать в charindex что-нибудь типа '$%$', чтобы получить отдельно "2 этаж", "подвал" и др., но нельзя.

Что можно использовать, умеющее в регулярки, или как это сделать менее костыльно?

Спасибо заранее и с уважением,
Даниил.
6 июн 14, 14:40    [16132823]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Найдите в инете CLR библиотеку регулярных выражение и развлекайтесь по полной. LIKE паттерны очень слабы
6 июн 14, 14:41    [16132828]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
korhonen
Member

Откуда:
Сообщений: 6
a_voronin,

Спасибо!

Посмотрел в сторону цлр, обязательно, но не в этот раз.
Пятница, 15 часов, есть какой-нибудь вариант без необходимости качать и ставить VS?
Т.е. на коленке :)
6 июн 14, 14:45    [16132870]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
Glory
Member

Откуда:
Сообщений: 104760
korhonen
Пятница, 15 часов, есть какой-нибудь вариант без необходимости качать и ставить VS?
Т.е. на коленке :)

Ну так берете и пишиет на коленке.
Со вложенными substring/charindex
6 июн 14, 14:49    [16132903]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
korhonen
Member

Откуда:
Сообщений: 6
Glory,

charindex из substring из charindex?

Здесь нужна картинка с ДиКаприо, прищурившим глаза.

Вообще, кстати, надо.. попробовать, что ли :)
6 июн 14, 14:52    [16132936]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
Glory
Member

Откуда:
Сообщений: 104760
CHARINDEX ( expression1 , expression2 [ , start_location ] )
6 июн 14, 14:57    [16132988]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
korhonen
Member

Откуда:
Сообщений: 6
Glory,

Не то.
Если бы был end_location, еще бы можно было бы присобачить. Чариндекс у меня и так получает из:
Пункт 2 Постановления Верховного Совета РФ №3020-1 от 27.12.1991г.$2 этаж$78-78-01/0206/2009-114$15.05.2009                                                                                                                                                                                                                                                                                                                                                                                                         

позицию, с которой начинается отделенное знаком $
А сабстринг из чариндекса уже вот это:
$2 этаж$78-78-01/0206/2009-114$15.05.2009                                                                                                                                                                                                                                                                   


Из чего мне нужно получить:
2 этаж


С последним действием - затык.
6 июн 14, 15:02    [16133061]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
korhonen
Member

Откуда:
Сообщений: 6
Glory,
Простите, я понял вашу мысль.
Откинуть первый $ и найти второй вложенным чарстрингом.
спасибо!
6 июн 14, 15:09    [16133134]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
korhonen,

порежьте все строки по разделителю и отфильтруйте то, что нужно.
Как порезать говорилось 100500 раз, в том числе недавно.

Первое, что вспоминается, например: Функция, которая делит строку на слова
Ещё:

Разбить строку в хранимой процедуре

Парсинг строки из таблицы
6 июн 14, 15:20    [16133279]     Ответить | Цитировать Сообщить модератору
 Re: Регулярки в charindex, substring и прочая нечисть  [new]
korhonen
Member

Откуда:
Сообщений: 6
Решилось просто, стоило сходить на перекур и подумать после.

select
SUBSTRING(NAME,POS1,CHARINDEX('$',NAME,POS1)-POS1)
from (
select
NAME,
charindex('$',NAME)+1 POS1
from
(
select [Основание возникновения права собственности СПб] as NAME from KUGIReestr
) T
)T1
6 июн 14, 15:36    [16133441]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить