Искать в SQL с помощью LIKE - PullRequest
0 голосов
/ 21 июня 2019

У меня проблема с поиском в SQL с помощью LIKE. Я хочу, чтобы SQL LIKE осуществлял поиск по всем символам, которые можно смешивать. Позволь мне показать тебе. Пользователи БД:

----------------------------------------------
id   fname   lname   phoone   email
----------------------------------------------
1    John    Smit    51451    john@gmail.com
----------------------------------------------
2    Maria   Doul    878988   maria@gmail.com
----------------------------------------------
3    Bob     Coul    879333   bob@gmail.com
----------------------------------------------

SQL:

SELECT * FROM users WHERE CONCAT(fname, lname, phone, email) LIKE
'%Smi%514%'

SQL выше работает нормально. Но я хочу поискать также в обратном порядке:

SELECT * FROM users WHERE CONCAT(fname, lname, phone, email) LIKE
'%Smi%514%John%'

Вышеприведенный SQL возвращает NULL, потому что 'John' перед 'Smi' в CONCATENATION. Есть ли способ заставить SQL-запрос выполнять поиск в обоих направлениях.

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Вам понадобится отдельный like для каждого поискового запроса, например:

SELECT * 
FROM users 
WHERE CONCAT(fname, lname, phone, email) LIKE '%Smi%'
    AND CONCAT(fname, lname, phone, email) LIKE '%514%'
    AND CONCAT(fname, lname, phone, email) LIKE '%John%'
0 голосов
/ 23 июня 2019

Также рассмотрим

FULLTEXT(fname, lname, phone, email)

вместе с

MATCH(fname, lname, phone, email) AGAINST('+John +Smith +514' IN BOOLEAN MODE)
...