php - 複数カラム - sqlserver 文字列結合 null
WHERE句のSQLで2つの列を結合する (2)
これを試して:
SELECT *
FROM customers
WHERE concat(first_name,' ',last_name) like '%John Smith%';
参照:
MySQLの文字列関数
私のSQLでは、 WHERE
句とLIKE
句を使用して検索を実行しています。 ただし、 first_name
とlast_name
2つの列の値を組み合わせて検索する必要があり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つの列の合計値であるため、明らかにこれは機能しません。
以下を使用してください:
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%'