Неофициальный форум разработчиков QlikView и Qlik Sense

Форум разработчиков QlikView и Qlik Sense. Получи любые ответы на вопросы по QlikView и Qlik Sense в течении нескольких часов!

Вы не вошли.

Готовые решения на платйорме QlikView

#1 2015-04-05 00:39:39

padijvd
Участник
Зарегистрирован: 2015-02-18
Сообщений: 4
Windows 8Chrome 41.0.2272.101

определенный текст из строки

Добрый день!
Подскажите как можно в qlikview взять определенный текст из строки?
Нужно из адресов типа " Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - " взять только область в данном случае это "Новосибирская обл"

Неактивен

#2 2015-04-06 05:12:59

Chernov
Участник
Из Хабаровск
Зарегистрирован: 2015-04-03
Сообщений: 7
Windows 7Firefox 29.0

Re: определенный текст из строки

Здравствуйте,
если у вас везде есть запятые, и всегда область находится между второй и третьей запятой, то можно поиграть с функцией index,
примерный код:

trim( mid ( вашастрока, index (вашастрока, ',',2) + 1 ,  index (вашастрока, ',',3) - index (вашастрока, ',',2) - 1 ) ) 

где:
trim () - убираем лишние пробелы слева и справа
mid () - выбираем только нужные символы из всей строки
index (вашастрока, ',',2) - находим позицию второй запятой, с неё и начинаем отбор символов
index (вашастрока, ',',3) - находим позицию третьей запятой
index (вашастрока, ',',3) - index (вашастрока, ',',2) - находим числовую разницу в символах между запятыми

Ну и собственно полный код с вашей строкой даёт нужный результат:

=trim( mid ( ' Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - ', index (' Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - ', ',',2) + 1 ,  index (' Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - ', ',',3) - index (' Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - ', ',',2) -1 ) ) 

Редактировался Chernov (2015-04-06 05:16:24)

Неактивен

#3 2015-04-13 19:25:00

padijvd
Участник
Зарегистрирован: 2015-02-18
Сообщений: 4
Windows 8Chrome 41.0.2272.118

Re: определенный текст из строки

Спасибо!

Неактивен

#4 2015-04-14 13:02:18

Oleg Orlov
Участник
Зарегистрирован: 2015-02-16
Сообщений: 14
Windows 7Chrome 41.0.2272.118

Re: определенный текст из строки

Chernov пишет:

Здравствуйте,
если у вас везде есть запятые, и всегда область находится между второй и третьей запятой, то можно поиграть с функцией index,
примерный код:

trim( mid ( вашастрока, index (вашастрока, ',',2) + 1 ,  index (вашастрока, ',',3) - index (вашастрока, ',',2) - 1 ) ) 

где:
trim () - убираем лишние пробелы слева и справа
mid () - выбираем только нужные символы из всей строки
index (вашастрока, ',',2) - находим позицию второй запятой, с неё и начинаем отбор символов
index (вашастрока, ',',3) - находим позицию третьей запятой
index (вашастрока, ',',3) - index (вашастрока, ',',2) - находим числовую разницу в символах между запятыми

Ну и собственно полный код с вашей строкой даёт нужный результат:

=trim( mid ( ' Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - ', index (' Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - ', ',',2) + 1 ,  index (' Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - ', ',',3) - index (' Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - ', ',',2) -1 ) ) 

Добрый день!

Если подстрока всегда находится действительно между второй и третьей запятой, то удобнее будет воспользоваться функцией TextBetween. Последний (четвертый) необязательный параметр этой функции определяет какое по порядку вхождение подстроки нас интересует. По умолчанию используется значение 1, т.е. первое вхождение подстроки (в вашем примере результатом будет строка " 630007"). Указав значение 2, мы найдем подстроку " Новосибирская обл".

Trim(TextBetween([Строка], ',', ',', 2))

С уважением,
Олег Орлов

Неактивен

Сейчас в этой теме форумчан: 0, гостей: 1
[Bot] claudebot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.020 сек, 8 запросов выполнено - Использовано памяти: 1.49 Мбайт (Пик: 1.64 Мбайт) ]