【发布时间】:2018-05-20 11:14:06
【问题描述】:
我有这张表 'customer_master' 和其中的一些值。
CREATE TABLE customer_master(
CUSTOMER_NUMBER VARCHAR(6),
FIRSTNAME VARCHAR(30),
middlename VARCHAR(30),
lastname VARCHAR(30),
CUSTOMER_CITY VARCHAR(15),
CUSTOMER_CONTACT_NO VARCHAR(10),
occupation VARCHAR(10),
CUSTOMER_DATE_OF_BIRTH DATE,
CONSTRAINT customer_custid_pk PRIMARY KEY (CUSTOMER_NUMBER)
);
我想从上表中找到customer_number、firstname、middlename 和lastname,条件是对于那些没有中间名的客户,middlename 中的“null”值应替换为lastname.
所以我想为什么不在这里使用ifnull(middlename,lastname),当我使用它时,我得到了一些有趣的结果。
使用 ifnull() 之前
如果我不使用 ifnull 那么我的结果表如下所示。
select customer_number, firstname, middlename, lastname from customer_master;
使用 ifnull() 后
select customer_number ,firstname, ifnull(middlename, lastname) as 'Middle_Name' , lastname from customer_master;
我预计 middlename 中的所有空值都会被 lastname 替换,但没有发生,为什么?为什么只有一些middlename 行得到lastname 值不是全部?
有什么解释吗?
【问题讨论】: