Оператор для поиска строк по неполному названию в колонке.

MapInfo, MapBasic
Ответить
Alekseevich
Участник
Сообщения: 60
Зарегистрирован: 28 янв 2023, 13:38
Репутация: 2
Откуда: Лабытнанги

Оператор для поиска строк по неполному названию в колонке.

Сообщение Alekseevich » 13 фев 2023, 13:21

Подскажите, как составить запрос.
Из таблицы нужно выбрать строки; условие для отбора по одной из колонки: известно слово, по которому необходимо отобрать, например, "город". Но в колонке может встречаться не только "город", но и "большой город", "городок" и проч.
Как сформулировать?
Спасибо.

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение gamm » 13 фев 2023, 13:27

select * from a where a.key like "%город%"

P.S. Мампинфа по этой части очень убогая, поскольку не допускает использования регулярных выражений.

Alekseevich
Участник
Сообщения: 60
Зарегистрирован: 28 янв 2023, 13:38
Репутация: 2
Откуда: Лабытнанги

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение Alekseevich » 13 фев 2023, 15:46

gamm писал(а):
13 фев 2023, 13:27
select * from a where a.key like "%город%"

P.S. Мампинфа по этой части очень убогая, поскольку не допускает использования регулярных выражений.
Спасибо! В мануале так и не нашел.

А если поиск нужно осуществить по двум колонкам? То вот так?:
select * from a where a.key like "%город%" or a.key2 like "%город%"

marsel
Участник
Сообщения: 62
Зарегистрирован: 07 мар 2010, 10:02
Репутация: 6
Откуда: Казань

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение marsel » 13 фев 2023, 15:56

Проще - щелкнуть правой кнопкой по названию столбца - фильтр - содержит - ввести любой текст или буквы или цифры. То же самое для другого столбца

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение gamm » 13 фев 2023, 15:56

типа того ... но скобки с кавычками расставьте, и учтите, что в убогой мапинфе длина строки запроса сильно ограничена, и она ее усекает без предупреждения (а вы гадать будете, что не так). В общем, Мапинфа создавалась для раскрашивания картинок, для работы она не пригодна. Грузите все в PostGIS, и изучайте SQL с расширениями (фенкции с префиксом st_ ). Получаете результат нормальными средствами, и грузите в мапинфу, для раскрашивания. Интерфейс к PostGIS из QGIS, читайте мануалы ...

Alekseevich
Участник
Сообщения: 60
Зарегистрирован: 28 янв 2023, 13:38
Репутация: 2
Откуда: Лабытнанги

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение Alekseevich » 13 фев 2023, 18:31

gamm писал(а):
13 фев 2023, 15:56
типа того ... но скобки с кавычками расставьте, и учтите, что в убогой мапинфе длина строки запроса сильно ограничена, и она ее усекает без предупреждения (а вы гадать будете, что не так). В общем, Мапинфа создавалась для раскрашивания картинок, для работы она не пригодна. Грузите все в PostGIS, и изучайте SQL с расширениями (фенкции с префиксом st_ ). Получаете результат нормальными средствами, и грузите в мапинфу, для раскрашивания. Интерфейс к PostGIS из QGIS, читайте мануалы ...
Спасибо!

Alekseevich
Участник
Сообщения: 60
Зарегистрирован: 28 янв 2023, 13:38
Репутация: 2
Откуда: Лабытнанги

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение Alekseevich » 13 фев 2023, 18:32

marsel писал(а):
13 фев 2023, 15:56
Проще - щелкнуть правой кнопкой по названию столбца - фильтр - содержит - ввести любой текст или буквы или цифры. То же самое для другого столбца
Это в какой версии MI ?

marsel
Участник
Сообщения: 62
Зарегистрирован: 07 мар 2010, 10:02
Репутация: 6
Откуда: Казань

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение marsel » 13 фев 2023, 21:07

Точно не скажу с какой, но уже давно. В 12.5 и далее точно есть

Alekseevich
Участник
Сообщения: 60
Зарегистрирован: 28 янв 2023, 13:38
Репутация: 2
Откуда: Лабытнанги

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение Alekseevich » 13 фев 2023, 21:14

gamm писал(а):
13 фев 2023, 13:27
select * from a where a.key like "%город%"
Есть вариант, чтобы не учитывался регистр?

marsel
Участник
Сообщения: 62
Зарегистрирован: 07 мар 2010, 10:02
Репутация: 6
Откуда: Казань

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение marsel » 13 фев 2023, 21:21

Alekseevich писал(а):
13 фев 2023, 21:14
Есть вариант, чтобы не учитывался регистр?
Так просто - нет.
Можно неполное слово набрать (без буквы которая может быть в другом регистре) или добавить второе условие и/или

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение gamm » 14 фев 2023, 03:25

Недавно обсуждали вроде подобное, есть функция перевода всех букв в маленькие, типа lowcase$(), ищите в мануале
lowcase$(a.key) like "%город%"

Alekseevich
Участник
Сообщения: 60
Зарегистрирован: 28 янв 2023, 13:38
Репутация: 2
Откуда: Лабытнанги

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение Alekseevich » 14 фев 2023, 07:21

marsel писал(а):
13 фев 2023, 21:21
Можно неполное слово набрать (без буквы которая может быть в другом регистре) или добавить второе условие и/или
Сначала так и начал делать. Да покоя не даёт мысль - мало ли кто какой регистр использовал при вводе (не обязательно осознанно; и не обязательно в начале слова-всякое бывает). Поэтому при каждой такой операции навязчивая мысль покоя не даст - мало ли ошибка.

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Оператор для поиска строк по неполному названию в колонке.

Сообщение gamm » 14 фев 2023, 10:07

LCase$(str)

Ответить

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

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

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