MySQL CONCAT 関数を使用すると、関数が連結するフィールドのいずれかに NULL が含まれる場合、関数は NULL を返します。これにより、不完全な結果や一貫性のない結果が生じる可能性があります。
この例では、クエリは「device」テーブルからデータを取得し、5 つのフィールドを「device_name」という名前の 1 つの列に連結しようとします。ただし、一部の行では特定のフィールド (「os_type」や「os_version」など) に NULL 値が含まれるため、CONCAT 関数の結果はそれらの行に対して NULL になります。
この問題を解決し、NULL 値が連結するには、COALESCE 関数を利用できます。 COALESCE は 2 つ以上の引数を受け取り、最初の非 NULL 値を返します。 COALESCE の各フィールドをデフォルト値として空の文字列でラップすると、NULL 値が空の文字列に置き換えられるようになります。
以下の変更されたクエリには、COALESCE 関数が組み込まれています。
SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name FROM devices
COALESCE を使用すると、一部の値に NULL 値が含まれている場合でも、クエリは目的の結果を生成するようになりました。フィールド:
cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora cs3-Dell-10.125.103.27- cs4-Dell-10.125.103.28-
この手法は、連結プロセスで NULL 値を効果的に処理し、完全で一貫した結果を保証します。
以上がフィールドに NULL 値が含まれている場合に MySQL の CONCAT 関数が NULL を返さないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。