Hợp nhất có hoạt động trong MySQL không?

Sự kết hợp trong MySQL có thể được sử dụng để trả về giá trị null đầu tiên. Nếu có nhiều cột và tất cả các cột đều có giá trị NULL thì nó trả về NULL nếu không nó sẽ trả về giá trị không null trước

Cú pháp như sau

SELECT COALESCE(yourColumnName1,yourColumnName2,yourColumnName3,.......N) as
anyVariableName from yourTableName;

Để hiểu cú pháp trên, trước tiên chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau

Hàm COALESCE của MySQL được sử dụng để xử lý các giá trị NULL trong các cột của bảng. Bất cứ khi nào chúng ta tạo một bảng chứa các cột chưa được gán giá trị mặc định hoặc thuộc tính tăng tự động, thì các giá trị được chèn vào các cột đó theo mặc định là NULL. Trong khi truy xuất dữ liệu từ các bảng, việc hiển thị các giá trị NULL cho người dùng là không thuận tiện và phù hợp. Thay vì NULL, chúng ta nên thay thế giá trị NULL thành một số giá trị phù hợp tùy thuộc vào mục đích của cột đó và loại giá trị nào đang được lưu trữ trong đó

Ví dụ khi lưu tên nhưng cột chứa giá trị mặc định trong đó khi không chỉ định khi chèn thì ta nên thay giá trị NULL bằng chuỗi trống sử dụng coesce khi lấy cột tên

Bắt đầu khóa học khoa học dữ liệu miễn phí của bạn

Hadoop, Khoa học dữ liệu, Thống kê và những thứ khác

Cú pháp của MySQL COALESCE()

Dưới đây là cú pháp của MySQL COALESCE()

Gói khoa học dữ liệu tất cả trong một(360+ khóa học, hơn 50 dự án)

Hợp nhất có hoạt động trong MySQL không?
Hợp nhất có hoạt động trong MySQL không?
Hợp nhất có hoạt động trong MySQL không?
Hợp nhất có hoạt động trong MySQL không?

Hợp nhất có hoạt động trong MySQL không?
Hợp nhất có hoạt động trong MySQL không?
Hợp nhất có hoạt động trong MySQL không?
Hợp nhất có hoạt động trong MySQL không?

Giá
Xem khóa học

360+ Khóa học trực tuyến. hơn 50 dự án. Hơn 1500 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập Trọn đời
4. 7 (84.791 xếp hạng)

COALESCE(expression1,expression2,...);

Hàm kết hợp chấp nhận số lượng biểu thức có thể là cột hoặc giá trị trong bảng hoặc biểu thức khác. Nó trả về giá trị Non-Null đầu tiên trong danh sách được phân tách bằng dấu phẩy được cung cấp dưới dạng tham số. Tuy nhiên, chúng ta phải cẩn thận khi sử dụng nó vì nếu tất cả các giá trị và biểu thức đánh giá là NULL, thì giá trị trả về luôn là NULL

Chúng ta hãy xem xét một số ví dụ

Đầu tiên, chúng tôi sẽ tạo một danh sách các giá trị sẽ chứa NULL cũng như các phần tử có giá trị khác

Mã số

SELECT COALESCE(NULL, 1, NULL, 0, true, false );

Điều đó mang lại kết quả đầu ra sau với giá trị không Null đầu tiên là 1

Bây giờ, chúng ta sẽ truy vấn bằng cách sử dụng kết hợp trong danh sách chỉ chứa giá trị NULL trong đó

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Mã số

SELECT COALESCE(NULL, NULL, NULL);

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Hàm COALESCE để thay thế các giá trị NULL

Hãy để chúng tôi tạo một bảng có tên là giáo dục bằng cách sử dụng câu lệnh truy vấn sau

Mã số

CREATE TABLE `educba_writers` (
`id` int(11) NOT NULL,
`firstName` varchar(10) COLLATE latin1_danish_ci NOT NULL,
`rate` decimal(5,2) DEFAULT NULL,
`joining_date` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;

Bây giờ chúng tôi sẽ chèn một số giá trị trong đó

Mã số

INSERT INTO `educba_writers` (`id`, `firstName`, `rate`, `joining_date`) VALUES
(1, 'Payal', NULL, NULL),
(2, 'Vyankatesh', NULL, NULL),
(5, 'Om Prakash', NULL, NULL),
(6, 'Om Prakash', NULL, NULL);

Hãy để chúng tôi chèn thêm một số hàng với tỷ lệ khác null và giá trị ngày tham gia

Mã số

INSERT INTO `educba_writers` (`id`, `firstName`, `rate`, `joining_date`) VALUES
(1, 'Payal', 750, "2020-05-01"),
(2, 'Vyankatesh', 700, "2020-01-01"),
(5, 'Om Prakash', 600, "2020-02-01"),
(6, 'Om Prakash', 800, "2020-06-01");

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Bây giờ, chúng ta sẽ truy vấn trên bảng educba_writers để lấy giá trị của các cột FirstName, rate, ngày tham gia

Mã số

SELECT firstName,rate,joining_date FROM educba_writers;

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Bây giờ, chúng ta sẽ thay thế giá trị của cột tỷ lệ khi nó là NULL bằng 0. 00 và cột ngày tham gia với “1990-01-01” bằng cách sử dụng hàm kết hợp bằng cách đặt tên cột trong phần tử đầu tiên của danh sách và giá trị mà chúng ta phải thay thế bằng khi giá trị cột là NULL trong phần tử thứ hai

Truy vấn của chúng tôi để truy xuất các bản ghi với các giá trị NULL được thay thế theo yêu cầu của chúng tôi sẽ như sau

Mã số

________số 8

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Chúng ta có thể thấy từ tập kết quả rằng bất cứ nơi nào có bất kỳ giá trị NULL nào trong cột tỷ lệ và ngày_tham gia đều được thay thế bằng 0. 00 và giá trị “1990-01-01” tương ứng. Đây là nơi chức năng kết hợp được sử dụng hầu hết thời gian

Hàm COALESCE để thay thế một cột bằng giá trị khác khi đầu tiên là NULL

Có một nơi nữa mà chúng ta có thể sử dụng hàm kết hợp bên cạnh việc thay thế các giá trị null bằng các giá trị được chỉ định. Ví dụ: chúng ta có thể thay thế các giá trị NULL của bản ghi cột bằng một số giá trị cột khác bằng cách sử dụng chức năng kết hợp

Hãy để chúng tôi tạo một bảng mới có tên từ điển sẽ chứa các cột như từ, nghĩa và mô tả

Mã số

CREATE TABLE `dictionary` (
`word` varchar(100) DEFAULT NULL,
`meaning` varchar(5000) DEFAULT NULL,
`description` varchar(5000) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Hãy để chúng tôi chèn một số giá trị trong đó

Mã số

COALESCE(expression1,expression2,...);0

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Hãy để chúng tôi truy xuất các bản ghi của bảng

Mã số

SELECT COALESCE(NULL, 1, NULL, 0, true, false );0

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Bây giờ, chúng ta hãy thay thế các giá trị NULL của cột ý nghĩa bằng các giá trị cột mô tả cho các giá trị NULL bằng hàm kết hợp

Mã số

SELECT COALESCE(NULL, 1, NULL, 0, true, false );1

đầu ra

Hợp nhất có hoạt động trong MySQL không?

Chúng ta có thể thấy rằng các giá trị NULL của cột ý nghĩa được thay thế bằng cột mô tả vì chúng ta đã sử dụng kết hợp với một danh sách tham số chứa cột ý nghĩa và mô tả. Hàm sẽ tìm kiếm giá trị khác null đầu tiên. Nếu cột ý nghĩa chứa một giá trị khác null, thì giá trị đó sẽ được chọn trong khi truy xuất other nếu nó được tìm thấy null, sau đó kết hợp sẽ tìm kiếm giá trị cột mô tả tương ứng và sẽ hiển thị giá trị đó nếu nó không phải là null và sẽ hiển thị null nếu

Câu hàm IFNULL() Hàm COALESCE

  • Hàm IFNULL() hoạt động tương tự như hàm kết hợp
  • Sự khác biệt duy nhất giữa hàm IFNULL() và COALESCE() là hàm IFNULL() luôn chấp nhận hai giá trị làm tham số trong khi COALESCE() có thể chấp nhận bất kỳ số lượng tham số nào trong danh sách tham số của nó
  • Khi hàm COALESCE() được sử dụng với hai tham số, nó hoạt động giống như hàm IFNULL()

Phần kết luận

Chúng ta có thể sử dụng hàm kết hợp để thay thế các giá trị null trong cột bằng bất kỳ giá trị mong muốn nào có thể là một chuỗi hoặc số không đổi hoặc thậm chí với bất kỳ giá trị cột nào khác trong khi truy xuất các giá trị cột trong truy vấn CHỌN

Bài viết được đề xuất

Đây là hướng dẫn về MySQL COALESCE(). Ở đây chúng tôi thảo luận về phần giới thiệu, thay thế các giá trị NULL và một cột bằng giá trị khác khi đầu tiên là NULL. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

Hợp nhất có tốt hơn Isnull không?

Với ISNULL(), bạn chỉ có thể cung cấp một giá trị thay thế nhưng với COALESCE, bạn có thể cung cấp nhiều giá trị e. g. nếu col1 LÀ NULL thì lấy giá trị ở cột 2, nếu là NULL thì lấy giá trị mặc định.

Hợp nhất có nhanh hơn Isnull không?

Trong một trường hợp hẹp, việc sử dụng hàm isnull tích hợp sẽ mang lại hiệu suất tốt hơn so với việc kết hợp trên các cột không thể null . Tất nhiên, mô hình này thường nên tránh. Trên các cột không có giá trị, mọi thứ thực sự có thể đi ngang trong cả hai trường hợp.

Tôi có thể sử dụng cái gì thay vì hợp nhất?

Một số từ đồng nghĩa phổ biến của sự kết hợp là hỗn hợp, pha trộn, trộn lẫn, kết hợp, hợp nhất, trộn lẫn và trộn lẫn .

Tôi có thể sử dụng cái gì thay vì kết hợp trong SQL?

SQL động thường là câu trả lời tốt nhất cho điều này. Cụ thể, hãy xem cách SQL động được sử dụng nhưng nó vẫn được tham số hóa (tránh rủi ro SQL Injection).