Giới thiệu
Sử dụng IF(LENGTH(col), col, other_col) hoặc COALESCE(NULLIF(TRIM(col), ''), other_col) để: nếu FirstName có nội dung (không rỗng, không NULL) thì lấy FirstName, ngược lại lấy LastName.
Ví dụ thực hành
1. Tạo bảng DemoTable839
mysql> CREATE TABLE DemoTable839 (
StudentFirstName VARCHAR(100),
StudentLastName VARCHAR(100)
);
2. Chèn dữ liệu (có rỗng '', NULL)
mysql> INSERT INTO DemoTable839 VALUES
('Chris','Brown'),('','Taylor'),(NULL,'Taylor'),('Adam','Smith');
3. Lấy FirstName nếu có, không thì LastName
mysql> SELECT IF(LENGTH(StudentFirstName), StudentFirstName, StudentLastName) FROM DemoTable839;
4. Kết quả
+---------------------------------------------------------------+
| IF(LENGTH(StudentFirstName),StudentFirstName,StudentLastName) |
+---------------------------------------------------------------+
| Chris |
| Taylor |
| Taylor |
| Adam |
+---------------------------------------------------------------+
Giải thích
LENGTH('')= 0 → FALSE → lấyStudentLastName.LENGTH(NULL)= NULL → FALSE (trong ngữ cảnh boolean) → lấyStudentLastName.LENGTH('Chris')= 5 → TRUE → lấyStudentFirstName.
Cách chuẩn SQL, an toàn hơn: COALESCE + NULLIF + TRIM
SELECT COALESCE(NULLIF(TRIM(StudentFirstName), ''), StudentLastName) FROM DemoTable839;
TRIM: Xóa space đầu/cuối.NULLIF(..., ''): Chuỗi rỗng → NULL.COALESCE: Lấy giá trị đầu tiên không NULL.- Xử lý trọn vẹn: NULL, '', ' ' → đều fallback sang LastName.
So sánh các phương pháp
| Phương pháp | Xử lý NULL | Xử lý '' | Xử lý ' ' | Chuẩn SQL |
|---|---|---|---|---|
IF(LENGTH(col), col, other) | Có | Có | Không (LENGTH=3→TRUE) | Không (MySQL) |
COALESCE(NULLIF(TRIM(col),''), other) | Có | Có | Có | Có |
CASE WHEN TRIM(col)='' OR col IS NULL THEN other ELSE col END | Có | Có | Có | Có |
Khuyến nghị
Dùng COALESCE(NULLIF(TRIM(col), ''), other_col) cho code chuẩn, xử lý trọn vẹn các trường hợp rỗng.