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

Откуда: Таджикистан
Сообщений: 180
Добрый день, друзья!
У меня такая ситуация: В БД есть таблица, в ней записи, очень много записей (от 80 до 200 строк). Есть атрибут в этой таблице, называется "FullAddress". Содержимое этого атрибута, почти схожие, т.е содержимое этого атрибута в каждой строке имеет след. вид:
"Россия(страна). Москва(город). Метрогородок(район). Ленина(улица)"
"Россия. Москва. Метрогородок. Пушкина"
"Россия. Москва. Метрогородок. Ломоносова"
"Россия. Москва. Метрогородок. Лермонтова"

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

"Россия.город Москва.район Метрогородок.улица Ленина"
"Россия.город Москва.район Метрогородок.улица Пушкина"
"Россия.город Москва.район Метрогородок.улица Лермонтова"
"Россия.город Москва.район Метрогородок.улица Ломоносова"

Подскажите пожалуйста, как мне это сделать или направьте меня в правильном направлении!

Спасибо!!!
4 июн 14, 13:39    [16118814]     Ответить | Цитировать Сообщить модератору
 Re: Изменение одним запросом почти схожие записи!  [new]
TempFox
Guest
Функции CHARINDEX и SUBSTRING.
4 июн 14, 13:44    [16118871]     Ответить | Цитировать Сообщить модератору
 Re: Изменение одним запросом почти схожие записи!  [new]
Glory
Member

Откуда:
Сообщений: 104760
adimmat
Как видите, отличаются, только, названия улиц, все остальное, (страна, город, район) остается неизменным.

И где же в символьной строке произвольной длины начинается "название улицы" ? А "страна, город, район" ?
4 июн 14, 13:46    [16118887]     Ответить | Цитировать Сообщить модератору
 Re: Изменение одним запросом почти схожие записи!  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Говнокод:
SELECT
 PARSENAME('Россия. Москва. Метрогородок. Лермонтова',4)+'.город'
+PARSENAME('Россия. Москва. Метрогородок. Лермонтова',3)+'.район'
+PARSENAME('Россия. Москва. Метрогородок. Лермонтова',2)+'.улица'
+PARSENAME('Россия. Москва. Метрогородок. Лермонтова',1);
4 июн 14, 13:54    [16118976]     Ответить | Цитировать Сообщить модератору
 Re: Изменение одним запросом почти схожие записи!  [new]
adimmat
Member

Откуда: Таджикистан
Сообщений: 180
Glory,
название улицы самое последнее, перед ним район, перед районом город, и в самом начале Страна
4 июн 14, 14:01    [16119023]     Ответить | Цитировать Сообщить модератору
 Re: Изменение одним запросом почти схожие записи!  [new]
Glory
Member

Откуда:
Сообщений: 104760
adimmat
название улицы самое последнее

Последнее от чего ?

adimmat
и в самом начале Страна

И где заканчивается "страна" ?
4 июн 14, 14:04    [16119047]     Ответить | Цитировать Сообщить модератору
 Re: Изменение одним запросом почти схожие записи!  [new]
adimmat
Member

Откуда: Таджикистан
Сообщений: 180
Glory,
"." (точки) и указывает конец.
Россия. Москва. Метрогородок. Ленина.
4 июн 14, 14:09    [16119088]     Ответить | Цитировать Сообщить модератору
 Re: Изменение одним запросом почти схожие записи!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8301
adimmat, сначала нормализуйте данные с использованием какого-либо парсера строк. Парсеры поищите по конференции.
4 июн 14, 14:15    [16119144]     Ответить | Цитировать Сообщить модератору
 Re: Изменение одним запросом почти схожие записи!  [new]
Glory
Member

Откуда:
Сообщений: 104760
adimmat
"." (точки) и указывает конец.

Ну так и выберите подстроку до нужной по счету точки и замените.
4 июн 14, 14:19    [16119168]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить