За последние 24 часа нас посетили 21324 программиста и 1686 роботов. Сейчас ищут 1014 программистов ...

Соединение содержимого двух полей и поиск подстроки в них -

Тема в разделе "MySQL", создана пользователем battrack, 13 апр 2012.

  1. battrack

    battrack Активный пользователь

    С нами с:
    17 фев 2009
    Сообщения:
    16
    Симпатии:
    0
    При работе с базами данных MySQL возникла такая вот задачка (не знаю возможно ли это сделать или нет):
    Например, необходимо проверить наличие подстроки (keyword) в каком либо поле (field) таблицы (my_table) базы данных.
    Делаем SELECT * FROM `my_table` WHERE `field` LIKE '%keyword%'; - и проблем нет!
    Но задача стоит немного иная. Проблема в том, что есть два (или более) полей в базе field1 и field2 в которых необходимо искать строку. Причем делать это нужно так: нужно чтобы эти два поля были соединены в одно целое (т.е., грубо говоря, если это текстовые поля, то они сначала должны быть соединены (сконкатенированы)) и уже после этого нужно искать подстроку в этом «общем» тексте (состоящем из содержимого двух полей).
    Можно было бы сделать это таким образом: одним запросом SQL получить содержимое обоих полей, записать их в две переменные (php), затем слить тексты из этих двух переменных в один (оператором «точка» канкатанация) и уже искать подстроку в этой переменной.
    Т.е. запросом SQL мы выбираем два текста, а затем уже средствами php соединяем их и ищем в полученном тексте подстроку.
    Но хотелось бы все это сделать средствами SQL в одном запросе. Можно ли в одном запросе соединить содержимое двух полей, и затем в результате искать нужную строку (или делать другие действия)?
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Re: Соединение содержимого двух полей и поиск подстроки в ни

    В MySQL есть операция конкатенации. По-моему, функция concat()

    Добавлено спустя 24 секунды:
    Re: Соединение содержимого двух полей и поиск подстроки в них -
    А ещё у MySQL есть документация, где всё написано и примеры есть.

    Добавлено спустя 59 секунд:
    Re: Соединение содержимого двух полей и поиск подстроки в них -
    http://dev.mysql.com/doc/refman/5.6/en/string-functions.htm ... ion_concat
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Соединение содержимого двух полей и поиск подстроки в ни

    сфинкс - поисковая система по мускулу.
     
  4. battrack

    battrack Активный пользователь

    С нами с:
    17 фев 2009
    Сообщения:
    16
    Симпатии:
    0
    Re: Соединение содержимого двух полей и поиск подстроки в ни

    Блин, знал что трудно будет объяснить.
    Короче говоря, нужно сначала слить два поля в одно (соединить их содержимое), а потом с полученным результатом осуществлять какие-либо действия (например искать строку). И все это в одном запросе!

    Т.е. я могу водном запросе спомощью contact() соединить два поля и потом искать в результате слово?
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Re: Соединение содержимого двух полей и поиск подстроки в ни

    Да

    Добавлено спустя 1 минуту 52 секунды:
    Re: Соединение содержимого двух полей и поиск подстроки в них -
    WHERE CONCAT(`field_a`, `field_b) LIKE '%la-la-la%';
     
  6. battrack

    battrack Активный пользователь

    С нами с:
    17 фев 2009
    Сообщения:
    16
    Симпатии:
    0
    Re: Соединение содержимого двух полей и поиск подстроки в ни

    Спасибо!!! Надо было сразу лезть в документацию. Оказывается все просто!
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Соединение содержимого двух полей и поиск подстроки в ни

    прикольно!