MySQL chèn NULL nếu chuỗi rỗng

Chúng ta thường cần thay thế các giá trị NULL bằng Chuỗi rỗng hoặc trống trong SQL e. g. trong khi nối Chuỗi. Trong SQL Server, khi bạn nối một Chuỗi NULL với một Chuỗi không null khác, kết quả là NULL, có nghĩa là bạn mất thông tin bạn đã có. Để ngăn chặn điều này, bạn có thể thay thế NULL bằng Chuỗi trống trong khi nối. Có hai cách để thay thế NULL bằng các giá trị trống trong SQL Server, hàm ISNULL[],COALESCE[] . Cả hai hàm đều thay thế giá trị bạn cung cấp khi đối số là NULL như . Both functions replace the value you provide when the argument is NULL like ISNULL[column, ''] sẽ trả về Chuỗi trống nếu giá trị cột là NULL.


Tương tự, COALESCE[column, ''] cũng sẽ trả về giá trị trống nếu cột là NULL.

Sự khác biệt duy nhất giữa chúng là ISNULL[] dành riêng cho Microsoft SQL Server nhưng COALESCE[] is the standard way and supported by all major databases like MySQL, Oracle, and PostgreSQL.

Một điểm khác biệt nữa giữa chúng là bạn có thể cung cấp nhiều giá trị tùy chọn cho COALESCE[] e. g. COALESCE[column, column2, ''] , vì vậy nếu cột là null thì sẽ sử dụng cột2 và nếu cột đó cũng là null thì sẽ sử dụng rỗng .

Đối với những người mới bắt đầu sử dụng SQL Server và T-SQL, tôi cũng khuyên dùng khóa học trực tuyến Microsoft SQL for Beginners của Brewster Knowlton trên Udemy. Đây là một khóa học tuyệt vời để tìm hiểu các khái niệm cơ bản về T-SQL, chức năng và SQL Server.




Thay thế NULL bằng khoảng trống trong SQL SERVER - Ví dụ về ISNULL[]

Trước tiên chúng ta hãy xem cách sử dụng ISNULL[] để thay thế Chuỗi NULL thành Chuỗi rỗng trong SQL SERVER. Để hiểu vấn đề và giải pháp tốt hơn, hãy tạo một cơ sở dữ liệu mẫu với một số giá trị



IF OBJECT_ID[ 'tempdb..#People' ] IS NOT NULL
DROP TABLE #People;

CREATE TABLE #People [first_name varchar[30], last_name varchar[30]];

INSERT INTO #People VALUES ['Joe','Root'];
INSERT INTO #People VALUES ['Mary', NULL];
INSERT INTO #People VALUES [NULL, 'Broad'];

-- cleanup
-- DROP TABLE #People

Bây giờ, hãy hiển thị tên, họ và tên đầy đủ từ bảng #People , . Đây là truy vấn SQL của chúng tôi.

SELECT first_name, last_name, first_name + last_name AS full_name FROM #People
first_name last_name full_name
Joe        Root      JoeRoot
Mary       NULL      NULL
NULL       Broad     NULL

Bạn có thể thấy rằng full_name là NULL cho bản ghi thứ hai và thứ ba vì đối với chúng, first_name hoặc last_name là NULL. Để tránh điều đó và để thay thế NULL bằng Chuỗi rỗng, hãy sử dụng phương thức ISNULL[] trong truy vấn SQL của chúng ta.

SELECT first_name, last_name, ISNULL[first_name,''] + ISNULL[last_name,''] as full_name FROM #People
first_name last_name full_name
Joe        Root      JoeRoot
Mary       NULL      Mary
NULL       Broad     Broad

Bạn có thể thấy rằng mặc dù một trong các cột tham gia là NULL nhưng full_name không còn là NULL nữa vì ISNULL[] đang thay thế giá trị NULL bằng khoảng trống.


Sử dụng COALESCE[] để thay thế NULL bằng Chuỗi rỗng trong SQL SERVER

Trong ví dụ trước, bạn đã học cách sử dụng ISNULL[] để thay thế các giá trị NULL bằng giá trị trống trong SQL SERVER, hãy xem cách chúng ta có thể sử dụng COALESCE[] để làm điều tương tự. Hãy nhớ rằng, COALESCE[] là một chức năng tiêu chuẩn và bất cứ khi nào bạn có thể sử dụng COALESCE[], bạn nên sử dụng nó. Trong ví dụ này, bạn không cần làm gì cả, chỉ cần thay thế ISNULL[] bằng COALESCE[]< . and you are done, as shown in the following SQL query:

SELECT first_name, last_name, COALESCE[first_name,''] + COALESCE[last_name,''] as full_name FROM #People
first_name last_name full_name
Joe        Root      JoeRoot
Mary       NULL      Mary
NULL       Broad     Broad


Để tôi chỉ cho bạn một cách sử dụng khác của hàm COALESCE[] khi chúng ta đang sử dụng nó. Bạn có thể sử dụng COALESCE[] để hướng dẫn sử dụng giá trị của cột khác nếu cột mục tiêu là NULL và nếu đó cũng là null thì hãy sử dụng cột thứ ba, v.v.

Bạn có thể sử dụng kỹ thuật này để cung cấp các giá trị mặc định phức tạp trong báo cáo của mình. Ví dụ: trong trường hợp này, hãy hiển thị giá trị của last_name nếu first_name is NULL and the value of first_name if last_name is NULL in the report. Following SQL query uses COALESCE to do that:

______4
Đây là ảnh chụp màn hình các truy vấn SQL từ cơ sở dữ liệu Microsoft SQL SERVER 2014 để cung cấp cho bạn cái nhìn đầy đủ.






Đó là tất cả về cách thay thế NULL bằng Chuỗi rỗng hoặc trống trong SQL SERVER. Bạn có thể sử dụng ISNULL[] hoặc COALESCE[] để thay thế NULL bằng . Điều đặc biệt quan trọng là sử dụng các hàm này trong khi nối Chuỗi trong SQL Server vì một NULL có thể biến tất cả thông tin thành NULL.

Nhân tiện, bạn cũng có thể sử dụng CONCAT[] thay cho toán tử + để tránh NULL, hàm này trả về giá trị của . Giữa ISNULL[]COALESCE[] , hãy sử dụng ISNULL[] if you know for sure that your code will run on Microsoft SQL Server but COALESCE[] is better because it's standard and you can use it to replace NULL with empty String in any database like Oracle, MySQL, and PostgreSQL.


Học thêm
Giới thiệu về SQL
Chương trình đào tạo SQL hoàn chỉnh
SQL dành cho người mới. Phân tích dữ liệu cho người mới bắt đầu

MySQL có coi chuỗi rỗng là NULL không?

Tìm hiểu MySQL từ đầu về Khoa học dữ liệu và Phân tích . Tuy nhiên, nếu bạn so sánh NULL với chuỗi rỗng [ ' '] thì kết quả cũng sẽ luôn là NULL. if you compare empty string[ ' '] to empty string[ ' '], the result will always be NULL. However, if you compare with NULL to empty string[ ' '] then also the result will always be NULL.

Tốt hơn là lưu trữ NULL hoặc chuỗi rỗng?

Vì vậy, tốt hơn là sử dụng chuỗi trống cho cơ sở dữ liệu vì việc cho phép giá trị NULL buộc hệ thống phải thực hiện thêm công việc và không cung cấp dữ liệu . Tuy nhiên, NULL không đưa ra bất kỳ ngoại lệ nào khi hàm đếm[] được thực thi.

LÀ NULL một chuỗi trong MySQL?

Null cũng giống như một chuỗi rỗng . Trong MySQL, máy chủ không làm gì để không cho phép null làm giá trị của biểu thức được phân phối, cho dù đó là giá trị cột hay giá trị của biểu thức do người dùng cung cấp.

NULL và 0 có giống nhau trong MySQL không?

Trong MySQL, 0 hoặc NULL có nghĩa là sai và mọi thứ khác có nghĩa là đúng . Giá trị thật mặc định từ phép toán boolean là 1.

Chủ Đề