У меня есть эта таблица '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
должно быть заменено на 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
не все?Любое объяснение?
http://sqlfiddle.com/#!9/2c742b/3