Как искать несколько столбцов в MySQL?
Я пытаюсь создать функцию поиска, которая будет искать несколько столбцов, чтобы найти соответствие по ключевому слову. Этот запрос:
SELECT title FROM pages LIKE %$query%;
работает только для поиска одного столбца, я заметил, что разделение имен столбцов запятыми приводит к ошибке. Так можно ли искать несколько столбцов в mysql?
Ответы
Ответ 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."%'
Использование этого кода поможет вам легко найти несколько столбцов