MySQL - 如何在名称后面显示昵称(如果有,则只是名称)?

标签 mysql

如果 client_name 后面有括号,则尝试显示 client_nickname,但是如果 client_nickname 为 NULL,也仍然显示 client_name。无法显示没有昵称的 client_name。

尝试了 WHERE 语句,但仍然只显示有昵称的名字。

这是我随机创建的虚拟数据库

CREATE TABLE client ( 
client_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL, 
lastname VARCHAR(30) NOT NULL, 
client_nickname VARCHAR (30),
client_mobile int(10), 
client_home int(10),
client_office int(10)
); 

INSERT INTO client (client_id, firstname, lastname, client_nickname, client_mobile, client_home, client_office) 
VALUES ('1', 'Doe', 'John', 'Johnny', '11223344',NULL, '66778899'); 
INSERT INTO client (client_id, firstname, lastname, client_nickname, client_mobile, client_home, client_office) 
VALUES ('2', 'Mary', 'Lee', NULL, '99887766','44556677', '66778899'); 
INSERT INTO client (client_id, firstname, lastname, client_nickname, client_mobile, client_home, client_office) 
VALUES ('3', 'Dreylan', 'Zhou', 'LilMonster', NULL, NULL, '66770000'); 

到目前为止我为实现我想要的而编写的代码

SELECT CONCAT (firstname, " ", lastname, ' (', client_nickname, ')') AS client_name
FROM client;

我希望列“client_name”包含所有 3 个客户端名称,如下所示:

Doe John (Johnny)
Mary Lee
Dreylan Zhou (LilMonster)

但实际输出只有:

Doe John (Johnny)
Dreylan Zhou (LilMonster)

最佳答案

你可能需要检查 null

SELECT case when  client_nickname is null  
          then CONCAT(firstname, " ", lastname)
          else  CONCAT(firstname, " ", lastname, ' (', client_nickname, ')')
        end AS client_name
FROM client;

关于MySQL - 如何在名称后面显示昵称(如果有,则只是名称)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56191362/

相关文章:

php - 如何使用 PHP 将 XML 内容插入 mysql 数据库

php - 如何更改表列名称的前缀?

mysql - 从一个表中选择记录并添加到表2中,将最后插入的ID更新到表1中

mysql - 针对另外两个表选择一个表中缺少的行?

mysql - 更改或重置 mysql 用户的密码

php - 指定的列不在行中

sql - MySQL 备份表(如果存在)

mysql - bundle 安装 ROR 时出现错误 'mysql.h is missing'

php - Ajax /PHP/MySQL : Inserting data into db not working with Ajax and PHP

mysql - 如何为与 DBD 和 MySQL 5.1 一起使用的 Apache2 身份验证生成正确的密码格式?