Форум разработчиков QlikView и Qlik Sense. Получи любые ответы на вопросы по QlikView и Qlik Sense в течении нескольких часов!
Вы не вошли.
Страницы 1
Добрый день!
Подскажите как можно в qlikview взять определенный текст из строки?
Нужно из адресов типа " Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - " взять только область в данном случае это "Новосибирская обл"
Неактивен
Здравствуйте,
если у вас везде есть запятые, и всегда область находится между второй и третьей запятой, то можно поиграть с функцией 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)
Неактивен
Спасибо!
Неактивен
Здравствуйте,
если у вас везде есть запятые, и всегда область находится между второй и третьей запятой, то можно поиграть с функцией 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))
С уважением,
Олег Орлов
Неактивен
Страницы 1
[ Сгенерировано за 0.020 сек, 8 запросов выполнено - Использовано памяти: 1.49 Мбайт (Пик: 1.64 Мбайт) ]