Запросы в QGIS

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Vedmed
Участник
Сообщения: 70
Зарегистрирован: 19 янв 2012, 14:48
Репутация: 6

Запросы в QGIS

Сообщение Vedmed » 28 апр 2015, 10:50

Что используется в качестве групповых шаблонов в QGIS? Полагал, что * заменяет любое количество неизвестных символов, но запрос с ней не работает должным образом. Либо я использую не тот синтаксис, либо не тот символ. Запрос:
"NAME_CITY" = 'А*'
мне казалось, что данный запрос должен искать названия всех городов начинающихся на A, но не выбирается ни один город. Что я делаю не так?

И еще вопрос, какой символ в запросе заменяет один неизвестный символ (в ArcView это знак вопроса)?
Последний раз редактировалось Vedmed 28 апр 2015, 13:01, всего редактировалось 1 раз.

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 452
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 101
Откуда: Город в клёнах и акациях
Контактная информация:

Re: Запросы в QGIS

Сообщение Игорь Лебедь » 28 апр 2015, 11:30

Попробуйте "NAME_CITY" LIKE 'А%'

Vedmed
Участник
Сообщения: 70
Зарегистрирован: 19 янв 2012, 14:48
Репутация: 6

Re: Запросы в QGIS

Сообщение Vedmed » 28 апр 2015, 11:38

Ага, теперь работает. Значит % вместо * и LIKE вместо =
А для замены одного неизвестного символа что использовать? Например если мне надо найти названия городов, начинающиеся на М и из 5 букв? В арквью это было бы, что-то вроде:
"NAME_CITY" LIKE 'M????'

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 452
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 101
Откуда: Город в клёнах и акациях
Контактная информация:

Re: Запросы в QGIS

Сообщение Игорь Лебедь » 28 апр 2015, 12:35

Метод такой: создаёте новое поле (у меня на примере Namea), в него пишете результат вычисления в калькуляторе полей:

Код: Выделить всё

regexp_replace("Name",'М','Я')
Спойлер
Replace_QGIS.jpg
Replace_QGIS.jpg (309.61 КБ) 5333 просмотра
В принципе, можно и сразу в это же поле писать результат вычисления, просто для надёжности и больших данных лучше на живых данных не экспериментировать.
Последний раз редактировалось Игорь Лебедь 28 апр 2015, 12:54, всего редактировалось 1 раз.

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 452
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 101
Откуда: Город в клёнах и акациях
Контактная информация:

Re: Запросы в QGIS

Сообщение Игорь Лебедь » 28 апр 2015, 12:52

Подумал, и решил, может, Вам не то надо. Корректнее, наверно, будет так:

Код: Выделить всё

CASE
		WHEN "Name" LIKE 'М%' AND length("Name")=5 THEN 'Ю'||right("Name",4) 
		ELSE "Name"
END
Спойлер
Replace_QGIS2.jpg
Replace_QGIS2.jpg (330.34 КБ) 5327 просмотров

Vedmed
Участник
Сообщения: 70
Зарегистрирован: 19 янв 2012, 14:48
Репутация: 6

Re: Запросы в QGIS

Сообщение Vedmed » 28 апр 2015, 13:00

Отлично! То что нужно получилось запросом:
"NAME_CITY" LIKE 'М%' AND length ( "NAME_CITY")=5
Не знал раньше про length. Спасибо. Проблема решена.

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость