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

Откуда:
Сообщений: 131
есть поле, которое содержит информацию по местоположению в одной строке. Нужно разобрать город, улица, дом, этаж, кабинет
Например: ЕКАТЕРИНБУРГ-ЛУНАЧАРСКОГО-134Б-Э13-К1311

У меня получилось выделить только город.
SUBSTRING(N'ЕКАТЕРИНБУРГ-ЛУНАЧАРСКОГО-134Б-Э13-К1311',(CHARINDEX('',N'ЕКАТЕРИНБУРГ-ЛУНАЧАРСКОГО-134Б-Э13-К1311')),(CHARINDEX(N'-',N'ЕКАТЕРИНБУРГ-ЛУНАЧАРСКОГО-134Б-Э13-К1311')-CHARINDEX(N'',N'ЕКАТЕРИНБУРГ-ЛУНАЧАРСКОГО-134Б-Э13-К1311')))

подскажите, что делать дальше. лучше с примером.
11 июл 14, 10:01    [16290247]     Ответить | Цитировать Сообщить модератору
 Re: разобрать текст  [new]
Glory
Member

Откуда:
Сообщений: 104751
D_r_a_g_o_n
что делать дальше

Написать парсер, который по заданному символу разделителю (в вашем случае это "-"), разобье входную на подстроки.
На данном форуме несколько десятков тем с подобными парсерами.
11 июл 14, 10:26    [16290379]     Ответить | Цитировать Сообщить модератору
 Re: разобрать текст  [new]
_djХомяГ
Guest
прасинг строки
вызов соответственно
select * FROM [dbo].[f_StrToTableEx]('ЕКАТЕРИНБУРГ-ЛУНАЧАРСКОГО-134Б-Э13-К1311', '-')

ну и если требуются сделать какие то преобразования
11 июл 14, 10:36    [16290459]     Ответить | Цитировать Сообщить модератору
 Re: разобрать текст  [new]
D_r_a_g_o_n
Member

Откуда:
Сообщений: 131
нашел такой пример:
declare @TStr table
(
[str] varchar(100)
)

insert into @TStr ([str])
values(N'ЕКАТЕРИНБУРГ-ЛУНАЧАРСКОГО-134Б-Э13-К1311')

select s.str,
substring(ss.str, 1, a.first - 1) as str_1,
substring(ss.str, a.first + 1, b.second - a.first - 1) as str_2,
substring(ss.str, b.second + 1, c.third - b.second - 1) as str_3,
substring(ss.str, c.third + 1, d.fourth - c.third - 1) as str_4
from @TStr s
cross apply (select s.str + '--------' as str) ss
cross apply (select charindex('-', ss.str) as first) a
cross apply (select charindex('-', ss.str, a.first + 1) as second) b
cross apply (select charindex('-', ss.str, b.second + 1) as third) c
cross apply (select charindex('-', ss.str, c.third + 1) as fourth) d

результат:
????????????-????????????-134?-?13-?1311 ???????????? ???????????? 134? ?13
что нужно сделать , чтобы получить
ЕКАТЕРИНБУРГ-ЛУНАЧАРСКОГО-134Б-Э13-К1311 ЕКАТЕРИНБУРГ ЛУНАЧАРСКОГО 134Б Э13
11 июл 14, 11:28    [16290820]     Ответить | Цитировать Сообщить модератору
 Re: разобрать текст  [new]
Maxx
Member [скрыт]

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

[str] nvarchar(100)
11 июл 14, 11:30    [16290826]     Ответить | Цитировать Сообщить модератору
 Re: разобрать текст  [new]
D_r_a_g_o_n
Member

Откуда:
Сообщений: 131
сделал,попытаюсь вставить в скрипт
11 июл 14, 11:31    [16290835]     Ответить | Цитировать Сообщить модератору
 Re: разобрать текст  [new]
D_r_a_g_o_n
Member

Откуда:
Сообщений: 131
Maxx, спасибо, сам сделал
11 июл 14, 11:32    [16290841]     Ответить | Цитировать Сообщить модератору
 Re: разобрать текст  [new]
Glory
Member

Откуда:
Сообщений: 104751
D_r_a_g_o_n
нашел такой пример:

И где же вы находите такие примеры ?
11 июл 14, 11:42    [16290909]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить