ホームページ  >  記事  >  データベース  >  特に列の値を連結する必要があり、いずれかの列の値が NULL である場合、引数のいずれかが NULL の場合に NULL を返すという CONCAT() 関数の特性をどのように克服すればよいでしょうか?

特に列の値を連結する必要があり、いずれかの列の値が NULL である場合、引数のいずれかが NULL の場合に NULL を返すという CONCAT() 関数の特性をどのように克服すればよいでしょうか?

王林
王林転載
2023-09-07 10:49:021095ブラウズ

我们如何克服 CONCAT() 函数的属性,即如果任何一个参数为 NULL,它就会返回 NULL,特别是当我们想要连接列中的值并且任何列的值都为 NULL 时?

上記のプロパティは、特に列内の値を連結する必要があり、いずれかの列の値が NULL である場合には、ほとんど役に立ちません。この問題を解決するには、IFNULL() 関数と CONCAT() 関数を使用します。それを理解するために、テーブル「Student_name;」の例を考えてみましょう。その中には次のデータがあります -

mysql> Select * from Student_Name;
+---------+-------+---------+
| FName   | Mname | Lname   |
+---------+-------+---------+
| Rahul   | NULL  | Singh   |
| Gaurav  | Kumar | NULL    |
| Harshit | NULL  | Khurana |
| Yash    | Pal   | Sharma  |
+---------+-------+---------+
4 rows in set (0.00 sec)

さて、Fname、Mname、Lname 列の値を連結したい場合、出力は次のようになります -

mysql> Select CONCAT(Fname,Mname,Lname)AS Name from Student_Name;
+---------------+
| Name          |
+---------------+
| NULL          |
| NULL          |
| NULL          |
| YashPalSharma |
+---------------+
4 rows in set (0.00 sec)

ただし、 CONCAT() 関数の特性として、いずれかのパラメーターが NULL の場合は NULL を返すため、これが有用な出力ではないことはわかっています。次のクエリ -

mysql> Select CONCAT(IFNULL(Fname,''),IFNULL(Mname,''),IFNULL(Lname,''))AS Name from Student_Name;
+----------------+
| Name           |
+----------------+
| RahulSingh     |
| GauravKumar    |
| HarshitKhurana |
| YashPalSharma  |
+----------------+
4 rows in set (0.06 sec)
に示すように、IFNULL() 関数を使用してこの特性を克服できます。

以上が特に列の値を連結する必要があり、いずれかの列の値が NULL である場合、引数のいずれかが NULL の場合に NULL を返すという CONCAT() 関数の特性をどのように克服すればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。