[DATABASE] Xử lý kết quả truy vấn trả về NULL trong sqlsever sử dụng CONCAT_NULL_YIELDS_NULL
Xin chào các bạn, trong bài viết hôm nay mình sẽ chia sẽ các bạn về hàm CONCAT_NULL_YIELDS_NULL trong sqlserver . Thường khi các bạn truy vấn dữ liệu từ database sqlserver, và có nhiều dữ liệu sẽ trả về null. Như bài trước mình đã có nói về NULL, ...
Xin chào các bạn, trong bài viết hôm nay mình sẽ chia sẽ các bạn về hàm CONCAT_NULL_YIELDS_NULL trong sqlserver.
Thường khi các bạn truy vấn dữ liệu từ database sqlserver, và có nhiều dữ liệu sẽ trả về null.
Như bài trước mình đã có nói về NULL, NULL là một kiểu dữ liệu đặc biệt, khi các bạn thao thác tính toán với null thì dữ liệu cũng trả về null.
VD: 15 + 30 + NULL => NULL (Trong câu này kết quả mình mong muốn là nó phải trả về là 45).
Thường các bạn có thể xử lý bằng cách sử dụng những từ khóa trong Sqlserver như: CASE... WHEN, hoặc hàm ISNULL() hay COALESCE().
Tuy nhiên nếu các bạn sử dụng những biểu thức như vậy, sẽ làm cho source code của mình trông dài ra và khó quản lý.
Trong bài viết này sẽ sử dụng từ khóa CONCAT_NULL_YIELDS_NULL để sử dụng, mặc định thì sqlserver nó đã được kích hoạt ON.
Nếu các bạn muốn nó trả về dữ liệu là 45, các bạn chỉ cần set về OFF trước câu truy vấn, và sau khi truy vấn xong chúng ta sẽ trả về lại ON là xong.
Cú pháp sử dụng:
— Syntax for SQL Server SET CONCAT_NULL_YIELDS_NULL { ON | OFF }
Ví dụ 1:
SET CONCAT_NULL_YIELDS_NULL ON
Khi được set giá trị ON, thì kết quả nối chuỗi sẽ là như sau:
SELECT 'abc' + NULL => kết quả trả về là NULL
Ví dụ 2:
SET CONCAT_NULL_YIELDS_NULL OFF
Khi được set giá trị OFF, thì kết quả nối chuỗi se là như sau:
SELECT 'abc' + NULL => kết quả trả về là abc
Bên dưới là một ví dụ dùng cả ON và OFF:
PRINT 'Setting CONCAT_NULL_YIELDS_NULL ON'; GO -- SET CONCAT_NULL_YIELDS_NULL ON and testing. SET CONCAT_NULL_YIELDS_NULL ON; GO SELECT 'abc' + NULL ; GO -- SET CONCAT_NULL_YIELDS_NULL OFF and testing. SET CONCAT_NULL_YIELDS_NULL OFF; GO SELECT 'abc' + NULL; GO
Thanks for watching!