SQL поиск по нескольким столбцам, используя LIKE%?% - PullRequest
0 голосов
/ 24 мая 2018

У меня есть база данных пользователей со столбцами first_name', 'last_name' & 'email.

Затем я пытаюсь выполнить поиск, используя SQL, например, так:

SELECT * 
FROM customers 
WHERE email LIKE %?% OR 
      first_name LIKE %?% OR 
      last_name LIKE %?%";

Так что мои данные в моей базе данныхдля этих столбцов это:

table tr td{
  padding:5px;
}

<table border="1">
<tr><td>first_name</td><td>last_name</td><td>email</td></tr>
<tr><td>test</td><td>user</td><td>user@test.com</td></tr>
</table>

В этом случае я могу искать 'test' или я могу искать 'user' и получить правильный результат, но если я ищу 'test user', то нет результатов.

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

1 Ответ

0 голосов
/ 24 мая 2018

Вам нужен другой запрос.Невозможно выразить LIKE с несколькими входными параметрами.

Таким образом, вы можете поместить все свои поисковые термины в таблицу, что-то вроде этих строк ...

SELECT
  *
FROM
  customers
INNER JOIN
(
            SELECT '%test%'   AS param
  UNION ALL SELECT '%user%'
)
  AS search
    ON customers.email      LIKE search.param
    OR customers.first_name LIKE search.param
    OR customers.last_name  LIKE search.param

(или вы могли бы создать реальную таблицу вместо использования встроенного представления.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...