Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Trả về giá trị không rỗng/NULL, điền giá trị thay thế từ cột khác trong MySQL

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ấy StudentLastName.
  • LENGTH(NULL) = NULL → FALSE (trong ngữ cảnh boolean) → lấy StudentLastName.
  • LENGTH('Chris') = 5 → TRUE → lấy StudentFirstName.

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ápXử lý NULLXử 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 ENDCó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.