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

Cách hoạt động của COALESCE () trong MariaDB

Trong MariaDB, 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, 'Red', 'Black');

Kết quả:

Red

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

Black cũng không phải NULL, nhưng nó đến sau Red và vì vậy nó đã không được trả lại.

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

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

SELECT
    PetName,
    DOB AS "Date of Birth"
FROM Pets;

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

+---------+---------------+
| PetName | Date of Birth |
+---------+---------------+
| Fluffy  | 2020-11-20    |
| Fetch   | 2019-08-16    |
| Scratch | 2018-10-01    |
| Wag     | 2020-03-15    |
| Tweet   | 2020-11-28    |
| Fluffy  | 2020-09-17    |
| Bark    | NULL          |
| Meow    | NULL          |
+---------+---------------+

Chúng ta có thể thấy rằng hai hàng cuối cù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(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets;

Kết quả:

+---------+---------------+
| PetName | Date of Birth |
+---------+---------------+
| Fluffy  | 2020-11-20    |
| Fetch   | 2019-08-16    |
| Scratch | 2018-10-01    |
| Wag     | 2020-03-15    |
| Tweet   | 2020-11-28    |
| Fluffy  | 2020-09-17    |
| Bark    | None Supplied |
| Meow    | None Supplied |
+---------+---------------+

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, 5 * 2 );

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

10

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

COALESCE() so với IFNULL()

Khi được sử dụng với hai giá trị, COALESCE() hoạt động giống như IFNULL :

SET @a = null, @b = 52;
SELECT 
    COALESCE(@a, @b), 
    IFNULL(@a, @b);

Kết quả:

+------------------+----------------+
| COALESCE(@a, @b) | IFNULL(@a, @b) |
+------------------+----------------+
| 52               | 52             |
+------------------+----------------+

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): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB 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. Cách ASIN () hoạt động trong MariaDB

  2. Cách di chuyển cơ sở dữ liệu WHMCS sang MariaDB Galera Cluster

  3. Cách chuyển sang chữ hoa trong MariaDB

  4. Cách cài đặt Lighttpd với PHP, MariaDB và PhpMyAdmin trong Ubuntu

  5. Cách khắc phục sự cố cơ sở dữ liệu MySQL