次のようなものを試してください:
SELECT * FROM clients WHERE CONCAT(field1, '', field2, '', fieldn) LIKE "%Mary%"
文字列演算子と正規表現の詳細については、SQLドキュメントを参照してください。
編集:NULLフィールドに問題がある可能性があるため、IFNULL(field_i, '')
を使用する場合に備えて field_i
だけでなく
大文字と小文字の区別 :大文字と小文字を区別しない照合などを使用できます:
... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")
すべてのフィールドを検索するだけです :検索するフィールドを明示的に宣言せずにすべてのフィールドを検索するSQLクエリを作成する方法はないと思います。その理由は、リレーショナルデータベースの理論と、リレーショナルデータ(関係代数やcodd代数;これらはSQLの由来です)、理論では「すべてのフィールドを検索するだけ」などは許可されていません。もちろん、実際の動作はベンダーの具体的な実現に依存します。しかし、一般的なケースではそれは不可能です。確認するには、SELECT
を確認してください 演算子の構文(WHERE
セクション、正確には)。