我有这张表'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
条件,对于那些没有中间名的客户,则为“null”值middlename
中的lastname
应替换为ifnull(middlename,lastname)
。
所以我想为什么不在这里使用select customer_number, firstname, middlename, lastname from customer_master;
,当我使用它时,我得到了一些有趣的结果。
在使用ifnull()之前
如果我不使用ifnull,那么我的结果表就像这样。
select customer_number ,firstname, ifnull(middlename, lastname) as 'Middle_Name' , lastname from customer_master;
使用ifnull()
之后
middlename
我预计 lastname
中的所有空值都会被 middlename
取代,但事实并非如此?为什么只有一些lastname
行得到的 <div class="top-social-wrapper">
<?php gdlr_print_header_social(); ?>
</div>
值不是全部?
任何解释?
答案 0 :(得分:4)
如果您导入了数据,那么NULL
可能真的是'NULL'
,请尝试:
select . . .,
(case when ltrim(rtrim(middlename)) = 'NULL' or middlename is null
then lastname
else middlename
end) as middlename