ホームページ > データベース > mysql チュートリアル > フィールドに NULL 値が含まれている場合、MySQL の CONCAT が NULL を返すのはなぜですか? それを修正するにはどうすればよいですか?

フィールドに NULL 値が含まれている場合、MySQL の CONCAT が NULL を返すのはなぜですか? それを修正するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-27 04:25:11
オリジナル
977 人が閲覧しました

Why Does MySQL's CONCAT Return NULL When Fields Contain NULL Values, and How Can I Fix It?

MySQL CONCAT が NULL を含むフィールドに対して NULL を返す: 解決策と代替案

MySQL の CONCAT 関数は、複数のフィールドを 1 つの文字列に連結します。ただし、一部のフィールドに NULL 値が含まれており、式全体が NULL を返す場合には問題が発生する可能性があります。

問題の概要

次のテーブルとクエリについて考えてみましょう。

Table: devices

| affiliate_name | affiliate_location | model | ip | os_type | os_version |
|---|---|---|---|---|---|
| cs1 | inter | Dell | 10.125.103.25 | Linux | Fedora |
| cs2 | inter | Dell | 10.125.103.26 | Linux | Fedora |
| cs3 | inter | Dell | 10.125.103.27 | NULL | NULL |
| cs4 | inter | Dell | 10.125.103.28 | NULL | NULL |

Query:

SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
ログイン後にコピー

このクエリはデバイス名を次のように返します。

cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
ログイン後にコピー

解決策: NULL を空の文字列に置き換えます

NULL 値を無視し、代わりに空の文字列を連結するには、COALESCE 関数を使用できます。 COALESCE は複数の引数を受け取り、NULL 以外の最初の引数を返します。

変更されたクエリは次のとおりです:

SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name
FROM devices
ログイン後にコピー

このクエリは目的の結果を返します:

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 値が含まれている場合、MySQL の CONCAT が NULL を返すのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート