Trong bài viết này, tôi sẽ giải thích cách trả về tất cả các bản ghi khi Tham số được sử dụng để lọc kết quả trong Truy vấn SQL trống [trống] hoặc Null trong SQL Server
cơ sở dữ liệu
Ở đây tôi đang sử dụng Cơ sở dữ liệu Northwind của Microsoft. Hướng dẫn tải và cài đặt có trong bài viết sau
Tải xuống và cài đặt Cơ sở dữ liệu Northwind
Trả về tất cả các bản ghi khi Tham số trống [Trống] hoặc Null trong SQL Server Query
Có hai cách để chúng ta có thể trả về tất cả các bản ghi từ bảng khi Tham số được sử dụng để lọc kết quả trong Truy vấn SQL trống [trống] hoặc Null trong SQL Server
1. Sử dụng câu lệnh IF ELSE
Đây là phương pháp truyền thống mà hầu hết các trang web đề xuất. Trong trường hợp này, chúng tôi sẽ thêm điều kiện IF để kiểm tra xem Tham số được cung cấp là NULL hay Trống [Trống]
Quy trình được lưu trữ sau đây sử dụng tham số Tùy chọn EmployeeId. Bên trong thủ tục được lưu trữ, giá trị tham số trước tiên được kiểm tra Null bằng cách sử dụng hàm ISNULL và sau đó kiểm tra xem nó 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ề
TẠO THỦ TỤC Employees_GetEmployees
@EmployeeId INT = NULL
BẰNG
BẮT ĐẦU
ĐẶT SỐ LƯỢNG BẬT;
NẾU BỎ QUA[@EmployeeId, ''] ''
BẮT ĐẦU
CHỌN Id nhân viên
,Tên
,Họ
TỪ Nhân viên
Ở ĐÂU EmployeeId = @EmployeeId
END
KHÔNG
BẮT ĐẦU
CHỌN Id nhân viên
,Tên
,Họ
TỪ Nhân viên
END
KẾT THÚC
2. Sử dụng điều kiện OR
Bây giờ dưới đây là cái mà tôi gọi là lập trình thông minh, nó thực hiện chính xác những gì thủ tục lưu sẵn ở trên làm nhưng với ít dòng mã hơn và dễ lập trình
Quy trình được lưu trữ sau đây sử dụng tham số Tùy chọn EmployeeId. Bên trong thủ tục được lưu trữ, có một câu lệnh SELECT với mệnh đề WHERE với điều kiện OR
Đầu tiên, nó so khớp tham số EmployeeId với trường EmployeeId và trong trường hợp thứ hai, nó kiểm tra tham số EmployeeId cho Null bằng cách sử dụng hàm ISNULL và sau đó kiểm tra xem nó có Trống [Trống] khô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ề
TẠO THỦ TỤC Employees_GetEmployees
@EmployeeId INT = NULL
BẰNG
BẮT ĐẦU
ĐẶT SỐ LƯỢNG BẬT;
CHỌN Id nhân viên
,Tên
,Họ
TỪ Nhân viên
Ở ĐÂU EmployeeId = @EmployeeId
HOẶC BỎ QUA[@EmployeeId, ''] = ''
KẾT THÚC
ĐI
Kiểm tra các thủ tục được lưu trữ ở trên trong SQL Server
Dưới đây là tập hợp các giá trị tham số khác nhau được chuyển đến bộ lưu trữ và đầu ra của chúng
1. Giá trị tham số không được thông qua
EXEC Employees_GetEmployees
Khi giá trị tham số không được truyền thì Giá trị mặc định được đặt là Null và thủ tục được lưu trữ trả về tất cả các bản ghi