Подтвердить что ты не робот

Как искать несколько столбцов в MySQL?

Я пытаюсь создать функцию поиска, которая будет искать несколько столбцов, чтобы найти соответствие по ключевому слову. Этот запрос:

SELECT title FROM pages LIKE %$query%;

работает только для поиска одного столбца, я заметил, что разделение имен столбцов запятыми приводит к ошибке. Так можно ли искать несколько столбцов в mysql?

4b9b3361

Ответ 1

Вы можете использовать операторы AND или OR, в зависимости от того, что вы хотите, чтобы поиск возвращался.

SELECT title FROM pages WHERE my_col LIKE %$param1% AND another_col LIKE %$param2%;

Оба предложения должны совпадать для записи, которую нужно вернуть. В качестве альтернативы:

SELECT title FROM pages WHERE my_col LIKE %$param1% OR another_col LIKE %$param2%;

Если оба предложения совпадают, запись будет возвращена.

Подробнее о том, что вы можете делать с запросами MySQL SELECT, попробуйте документацию.

Ответ 2

Если это просто для поиска, вы можете использовать CONCATENATE_WS. Это позволит проводить поиск по диким картам. В зависимости от размера таблицы могут возникать проблемы с производительностью.

SELECT * 
FROM pages 
WHERE CONCAT_WS('', column1, column2, column3) LIKE '%keyword%'

Ответ 3

Если ваша таблица MyISAM:

SELECT  *
FROM    pages
WHERE   MATCH(title, content) AGAINST ('keyword' IN BOOLEAN MODE)

Это будет намного быстрее, если вы создадите индекс FULLTEXT в своих столбцах:

CREATE FULLTEXT INDEX fx_pages_title_content ON pages (title, content)

но будет работать даже без индекса.

Ответ 4

1)

select *
from employee em
where CONCAT(em.firstname, ' ', em.lastname) like '%parth pa%';

2)

select *
from employee em
where CONCAT_ws('-', em.firstname, em.lastname) like '%parth-pa%';

Сначала полезно, когда у нас есть такие данные, как: 'firstname lastname'.

e.g

  • parth patel
  • parth p
  • patel parth

Во-вторых, полезно, когда у нас есть такие данные, как: "firstname-lastname". В нем вы также можете использовать специальные символы.

e.g

  • Parth-Патель
  • parth_p
  • Патель # Parth

Ответ 5

SELECT * FROM persons WHERE (`LastName` LIKE 'r%') OR (`FirstName` LIKE 'a%');

Попробуйте выполнить вышеуказанный запрос.

Ответ 6

Вот запрос, который вы можете использовать для поиска чего-либо из вашей базы данных в качестве результата поиска,

SELECT * FROM tbl_customer 
    WHERE CustomerName LIKE '%".$search."%'
    OR Address LIKE '%".$search."%' 
    OR City LIKE '%".$search."%' 
    OR PostalCode LIKE '%".$search."%' 
    OR Country LIKE '%".$search."%'

Использование этого кода поможет вам легко найти несколько столбцов