Kiểm tra thủ tục lưu trữ mysql nếu tham số rỗng hoặc trố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ụ 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 , trong đó tên đầy đủ không là gì ngoài sự nối của . Đâ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 trố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ế các giá trị NULL bằng một khoảng trống


Sử dụng COALESCE() để thay thế NULL bằng String 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:

SELECT 
COALESCE(first_name,last_name, '') as first_name,
COALESCE(last_name, first_name,'') as last_name,
COALESCE(first_name,'') + COALESCE(last_name,'') as full_name
FROM #People
first_name last_name full_name
Joe        Root      JoeRoot
Mary       Mary      Mary
Broad      Broad     Broad

Đâ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 đủ


Kiểm tra thủ tục lưu trữ mysql nếu tham số rỗng hoặc trống





Đó 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.

Btw, 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 đối số không null nếu khác . 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 cho người mới. Phân tích dữ liệu cho người mới bắt đầu

Làm cách nào để kiểm tra xem một tham số có rỗng trong thủ tục lưu trữ SQL không?

Bên trong thủ tục được lưu trữ, trước tiên, giá trị tham số được kiểm tra Null bằng cách sử dụng hàm ISNULL và sau đó kiểm tra xem giá trị đó có Trống (Trống). Nếu tham số có giá trị thì chỉ các bản ghi phù hợp sẽ được trả về, trong khi nếu tham số là Không hoặc Trống (Trống) thì tất cả các bản ghi từ bảng sẽ được trả về.

Là null trong thủ tục được lưu trữ MySQL?

Hàm ISNULL() của MySQL dùng để kiểm tra xem một biểu thức có phải là NULL hay không . Hàm này trả về 1 nếu biểu thức được truyền là NULL, ngược lại trả về 0. Hàm ISNULL() chấp nhận biểu thức dưới dạng tham số và trả về một số nguyên có giá trị 0 hoặc 1 tùy thuộc vào tham số được truyền.

Làm cách nào để chuyển giá trị NULL làm tham số trong thủ tục được lưu trữ trong MySQL?

Trong câu lệnh tạo thủ tục, bạn có thể khai báo null làm giá trị mặc định cho các tham số riêng lẻ. tạo thủ tục tên thủ tục @param kiểu dữ liệu [ = null ] [, @param kiểu dữ liệu [ = null ]] . Nếu người dùng không cung cấp tham số, Máy chủ thích ứng sẽ thực thi quy trình được lưu trữ mà không hiển thị thông báo lỗi.

Làm cách nào để kiểm tra xem trường có trống trong MySQL không?

Toán tử IS NULL được sử dụng để kiểm tra các giá trị trống (giá trị NULL).