MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

列の値を連結する必要があり、いずれかの列の値がNULLである場合、CONCAT()関数に対するCONCAT_WS()関数の利点は何ですか?


引数のいずれかがNULLの場合、CONCAT()関数はNULLを返しますが、CONCAT_WS()関数は、最初の引数、つまりセパレータがNULLであり、他の引数を無視する場合にのみNULLを返します。ヌル。これは、列の値を連結する必要があり、いずれかの列の値がNULLである場合に、CONCAT()関数に対するCONCAT_WS()関数の利点であると言えます。それを理解するために、テーブル「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_WS()関数を使用する場合は、次のクエリのようにNULLを無視します-

mysql> Select CONCAT_WS(' ',Fname,Mname,Lname)AS Name from student_name;
+-----------------+
| Name            |
+-----------------+
| Rahul Singh     |
| Gaurav Kumar    |
| Harshit Khurana |
| Yash Pal Sharma |
+-----------------+
4 rows in set (0.00 sec)

  1. MySQLでそのような列値の1つがnullの場合、2つの列を連結します

    クエリの実行中に問題が発生しないようにするには、IFNULL()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1793      (      StudentFirstName varchar(20),      StudentLastName varchar(20)      ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコード

  2. 2つの列からすべての列値をカウントし、合計カウントからNULL値を除外するMySQLクエリ?

    まずテーブルを作成しましょう- mysql> create table DemoTable1975    (    StudentName varchar(20),    StudentMarks int    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1975 values('John',45); Query OK, 1 r