Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2016, 09:04   #1
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию Поиск по вхождению подстроки в строку + несколько полей

Добрый день.
Встала задача организовать поиск адреса объекта, тоесть пользователь в трочке поиска вбивает скажем Москва Котельная7
и ему выдаются все результаты у которых:
город Москва
улица Котельная
дом 7
Как делал я: создавал отдельное поле туда записывал адрес целеком и выполнял запрос
Код:
SELECT * FROM `tbtest` WHERE `Pole`  Like '%отельна%'
Как сделать тоже но по трем полям тоесть надо сделать конкатинацию полей City Street Home
и в результирующей строке найти подстроку
Lokos вне форума Ответить с цитированием
Старый 02.12.2016, 09:08   #2
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

SELECT * FROM `tbtest` WHERE CONCAT(`City`,' ',`Street`) Like '%'+str+'%'
Lokos вне форума Ответить с цитированием
Старый 02.12.2016, 09:18   #3
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

может кто подскажет как организован поиск адресов в кладер api и подобных системах, пока наум пришел только такой поиск как описан выше
Lokos вне форума Ответить с цитированием
Старый 02.12.2016, 09:20   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Если он вбивает Москва Котельная и так же искать, то можно и ни чего не найти. А если то, что ввел разбить на слова и искать
Код:
<выражение> like '%Москва%' and <выражение> like '%Котельная%'
то шансов больше. В том выражении concat или чего еще. Поиск такой кстати не эффективный, индексы работать не будут. Даже и без concat, достаточно % в начале поискового образа
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.12.2016, 09:24   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
pole like '%москва%котельная%'
pole like '%москва% %котельная%'
pole like 'москва% котельная%'
...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.12.2016, 09:24   #6
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Если он вбивает Москва Котельная и так же искать, то можно и ни чего не найти. А если то, что ввел разбить на слова и искать
Код:
<выражение> like '%Москва%' and <выражение> like '%Котельная%'
то шансов больше. В том выражении concat или чего еще. Поиск такой кстати не эффективный, индексы работать не будут. Даже и без concat, достаточно % в начале поискового образа
а разве если в вашем примере он не найдет скажем котельную то результат опять же будет 0
но вариант интересный, попробую
Lokos вне форума Ответить с цитированием
Старый 02.12.2016, 09:29   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

evg_m +
Чего-то не доходило, что и так можно
Цитата:
а разве если в вашем примере он не найдет скажем котельную то результат опять же будет 0
но вариант интересный, попробую
Если искать что-бы и Москава, и Котельникова было, то как еще? А если или то, или другое тогда OR вместо AND
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.12.2016 в 09:32.
Аватар вне форума Ответить с цитированием
Старый 02.12.2016, 09:31   #8
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
pole like '%москва%котельная%'
pole like '%москва% %котельная%'
pole like 'москва% котельная%'
...
только pole разделено на 3 city street home
Lokos вне форума Ответить с цитированием
Старый 02.12.2016, 09:35   #9
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
evg_m +
Чего-то не доходило, что и так можно
Если искать что-бы и Москава, и Котельникова было, то как еще? А если или то, или другое тогда OR вместо AND
Да что то я сглупил)
Lokos вне форума Ответить с цитированием
Старый 02.12.2016, 09:36   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
только pole разделено на 3 city street home
Код:
<выражение> like ...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск символов (подсчёт вхождений подстроки в строку) Kukurudza Общие вопросы C/C++ 2 24.09.2011 10:18
Вхождение подстроки в строку! Edimus Общие вопросы C/C++ 4 04.04.2011 07:50
Поиск по вхождению(плейлист) nXs Мультимедиа в Delphi 3 08.05.2010 16:43
C++: разбить строку на подстроки apromix Помощь студентам 2 04.10.2009 01:07
Вставка подстроки в строку Kortes Общие вопросы C/C++ 2 25.12.2008 11:51