23

私の SQL では、WHEREandLIKE句を使用して検索を実行しています。ただし、次の 2 つの列を組み合わせた値で検索を実行する必要がありfirst_nameますlast_name

WHERE customers.first_name + customers.last_name LIKE '%John Smith%'

これはうまくいきませんが、どうすればこれらの線に沿って何かできるのでしょうか?

次のように、2 つの列で別々に検索しようとしました。

WHERE customers.first_name LIKE '%John Smith%' OR customers.last_name LIKE '%John Smith%'

しかし、検索クエリはこれら 2 つの列を組み合わせた値であるため、明らかにそれは機能しません。

4

3 に答える 3

36

以下を使用します。

WHERE CONCAT(customers.first_name, ' ', customers.last_name) LIKE '%John Smith%'

これが意図したとおりに機能するためには、名と姓を削除する必要があることに注意してください。つまり、先頭または末尾に空白を含めないでください。データベースに挿入する前に、PHP で文字列をトリミングすることをお勧めします。ただし、次のようにトリミングをクエリに組み込むこともできます。

WHERE CONCAT(TRIM(customers.first_name), ' ', TRIM(customers.last_name)) LIKE '%John Smith%'
于 2012-04-25T23:25:42.317 に答える
2

私はこのようなものから始めます:

WHERE customers.first_name LIKE 'John%' AND customers.last_name LIKE 'Smith%'

パーセント記号は句の最後にのみあるためJohn Smith、これは次のJohnny Smithyような結果を返します。とは異なり、次のような結果を返す可能性があります:、。 Johnson SmithisonLIKE'%John%'aaaaJohnaaaaaaaSmithaaa

于 2012-04-25T23:30:49.490 に答える
1

これを試して:

SELECT * 
FROM customers 
WHERE concat(first_name,' ',last_name) like '%John Smith%';

リファレンス:
MySQL 文字列関数

于 2012-04-25T23:57:08.530 に答える