Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: คืนค่า Non-Empty/Non-NULL และเติมค่าสำรองจากคอลัมน์อื่น

การใช้ IF + LENGTH + COALESCE เลือกค่าสำรอง

ตรวจสอบ LENGTH(StudentFirstName) ถ้ามีค่า (ไม่ใช่ 0/NULL) ใช้ FirstName มิฉะนั้นใช้ LastName

ตัวอย่าง

mysql> create table DemoTable839(
    StudentFirstName varchar(100),
    StudentLastName varchar(100) );
Query OK, 0 rows affected (0.69 sec)
mysql> insert into DemoTable839 values('Chris', 'Brown');
mysql> insert into DemoTable839 values('', 'Taylor');
mysql> insert into DemoTable839 values(NULL, 'Taylor');
mysql> insert into DemoTable839 values('Adam', 'Smith');

คำสั่งหลัก

mysql> select if(length(StudentFirstName), StudentFirstName, StudentLastName) from DemoTable839;

ผลลัพธ์:

+---------------------------------------------------------------+
| if(length(StudentFirstName),StudentFirstName,StudentLastName) |
+---------------------------------------------------------------+
| Chris                                                         |
| Taylor                                                        |
| Taylor                                                        |
| Adam                                                          |
+---------------------------------------------------------------+

คำอธิบาย

  • LENGTH('') = 0 (FALSE)
  • LENGTH(NULL) = NULL (FALSE)
  • LENGTH('Chris') = 5 (TRUE)
  • IF(TRUE, 'Chris', 'Brown') -> 'Chris'
  • IF(FALSE, '', 'Taylor') -> 'Taylor'

วิธีที่เป็นมาตรฐานกว่า: COALESCE + NULLIF

SELECT COALESCE(NULLIF(TRIM(StudentFirstName), ''), StudentLastName) FROM DemoTable839;
  • TRIM() - ตัด Space
  • NULLIF(x, '') - คืน NULL ถ้า x = ''
  • COALESCE() - คืนค่าแรกที่ไม่ใช่ NULL

สรุป

ใช้ IF(LENGTH(col), col, fallback) หรือ COALESCE(NULLIF(TRIM(col), ''), fallback) เลือกค่าหลัก ไม่ใช่ใช้ค่าสำรอง