0

Customers列を持つ名前のテーブルがありますFirstName, LastName, Email

ジョン | ジョンという顧客がいるとしましょう。ウィリアムズ | johnW1234@gmail.com

検索する場合、次のようにクエリを作成する必要があります。

"williams"       =>  match
"will john"      =>  Match
"will john 55"   =>  NO match
"will 1234"      =>  match

私のクエリは次のようになります。

SELECT * FROM `Customers` WHERE `FirstName` LIKE _search_ OR `LastName` LIKE _search__

しかし、誰かが "will john" を検索する場合、私のクエリは一致を返しません

4

4 に答える 4

1

あなたはそのようなことをしたいようです:

select * from Customers where 
(FirstName like concat('%','john', '%') and LastName like concat('%','smith', '%'))
or
(LastName like concat('%','john', '%') and FirstName like concat('%','smith', '%'))

部分:johnおよびsmith(クエリ内) は、検索語のさまざまな部分であり、スペースで分解され、小文字に変更されます (コードまたは DB のいずれかで実行できます)。

フィドルへのリンク

于 2013-10-28T16:09:53.713 に答える
0

大雑把に...

SET @string = 'John|Williams|johnW1234@gmail.com';

SELECT IF(@string LIKE "%will%",IF(@string LIKE "%john%",IF(@string LIKE "%55%",1,0),0),0)x;
+---+
| x |
+---+
| 0 |
+---+

SELECT IF(@string LIKE "%will%",IF(@string LIKE "%john%",IF(@string LIKE "%12%",1,0),0),0)x;
+---+
| x |
+---+
| 1 |
+---+
于 2013-10-28T16:18:03.913 に答える