在连接期间,NULL值将所有内容都转换为NULL

Mik*_*ail -2 mysql sql concatenation

我正在使用的DBMS是MySQL.

这是表格:

                    AUTHOR
author_id | first_name | last_name | patronymic
-----------------------------------------------
     1    | John       | Bush      | NULL
     2    | Sergey     | Burov     | Romanovich
     3    | NULL       | Filin     | NULL
Run Code Online (Sandbox Code Playgroud)

如果我发出此查询:

SELECT author_id,
       CONCAT(first_name, ' ', last_name,  ' ', patronymic) AS full_name
FROM   author;
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

author_id | full_name
-----------------------------------
     1    | NULL
     2    | Sergey Burov Romanovich
     3    | NULL
Run Code Online (Sandbox Code Playgroud)

因此,从示例中可以看出,如果字段具有NULL值,则在连接过程中,整个事物将设置为NULL.请解释一下,如何让MySQL将NULL值转换为长度为0的字符串,或者只是使它不会连接NULL值?

谢谢大家.

fth*_*lla 5

您可以使用CONCAT_WS使用分隔符连接字符串,并跳过空值:

SELECT author_id,
       CONCAT_WS(' ', first_name, last_name,  patronymic) AS full_name
FROM   author;
Run Code Online (Sandbox Code Playgroud)

请看这里的小提琴.