Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL COALESCE () Giải thích

Trong MySQL, COALESCE() toán tử trả về giá trị không phải NULL đầu tiên trong danh sách hoặc NULL nếu không có giá trị không phải NULL.

Cú pháp

Cú pháp như sau:

COALESCE(value,...)

Ví dụ

Dưới đây là một ví dụ đơn giản để chứng minh:

SELECT COALESCE(null, 'Fish', 'Rabbit');

Kết quả:

Fish

Trong trường hợp này, Fish là giá trị không phải NULL đầu tiên và vì vậy COALESCE() đã trả lại giá trị đó.

Rabbit cũng là một giá trị không phải NULL, nhưng nó đến sau Fish và vì vậy nó đã không được trả lại.

Khi tất cả các giá trị đều KHÔNG ĐẦY ĐỦ

Nếu tất cả các giá trị là NULL , COALESCE() trả về NULL :

SELECT COALESCE( null, null );

Kết quả:

NULL

Biểu thức

COALESCE() trả về giá trị hiện tại của biểu thức đầu tiên mà ban đầu không đánh giá thành NULL . Do đó, nếu chúng ta truyền một biểu thức như sau:

SELECT COALESCE( null, 2 * 10 );

Chúng tôi nhận được điều này:

20

Ví dụ về cơ sở dữ liệu

Giả sử chúng ta chạy truy vấn sau:

SELECT
  PetName,
  PetType
FROM Pets;

Và chúng tôi nhận được kết quả sau:

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	NULL
Moo	Cow
Omph	NULL

Chúng ta có thể thấy rằng hai hàng có giá trị NULL trong cột DOB.

Nếu chúng tôi muốn thay thế NULL với một giá trị khác, chúng tôi có thể thay đổi truy vấn như sau:

SELECT
  PetName,
  COALESCE(PetType, 'Unknown') AS "PetType"
FROM Pets;

Kết quả:

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	Unknown
Moo	Cow
Omph	Unknown

Trong trường hợp này, chúng tôi đã thay thế tất cả các giá trị NULL bằng chuỗi Unknown .

Tuy nhiên, nó không cần phải là một chuỗi. Dưới đây là một ví dụ khác thay thế các giá trị NULL bằng một số nguyên:

SELECT 
  EmployeeName,
  Salary,
  COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;

Kết quả:

EmployeeName	Salary	Salary (adjusted)
--------------  ------  -----------------
Homer Einstein	NULL	0
Bart Hawking	100000	100000

Số lượng đối số không hợp lệ

Sử dụng COALESCE() mà không có bất kỳ đối số nào dẫn đến lỗi:

SELECT COALESCE();

Kết quả:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi từ datetime của MySQL sang định dạng khác bằng PHP

  2. Làm thế nào để chuyển đổi tất cả các bảng từ MyISAM thành InnoDB?

  3. Định dạng ngày MySQL DD / MM / YYYY chọn truy vấn?

  4. Dấu gạch nối trong tên cột trong MySQL DB

  5. Học MySQL / MariaDB cho người mới bắt đầu - Phần 1