Bạn có thể sử dụng ISNULL nhiều lần trong cùng một câu lệnh SQL cho các cột khác nhau, nhưng bạn phải viết nó riêng cho từng cột:
SELECT
ISNULL(ProductName, 'No Data') AS ProductName,
ISNULL(CAST(UnitPrice AS NVARCHAR), 'No Data') AS UnitPrice,
ISNULL(CAST(UnitsInStock AS NVARCHAR), 'No Data') AS UnitsInStock,
ISNULL(CAST(UnitsOnOrder AS NVARCHAR), 'No Data') AS UnitsOnOrder
FROM tbl
Nếu bạn đang tạo một truy vấn SQL động, về mặt lý thuyết, bạn có thể thu thập danh sách các cột trong bảng và tạo một truy vấn với ISNULL trên mỗi cột. Ví dụ:
DECLARE @SQL nvarchar(max)
SET @SQL = 'SELECT '
SELECT @SQL = @SQL + 'ISNULL(CAST([' + sc.name + '] AS NVARCHAR), ''No Data'') AS [' + sc.name + '],'
FROM sys.objects so
INNER JOIN sys.columns sc ON sc.object_id = so.object_id
WHERE so.name = 'tbl'
-- Remove the trailing comma
SELECT @SQL = LEFT(@SQL, LEN(@SQL) - 1) + ' FROM tbl'
EXEC sp_sqlexec @SQL
Mã này gặp sự cố khi chuyển đổi một số loại cột như dấu thời gian thành nvarchar, nhưng nó minh họa kỹ thuật.
Lưu ý rằng nếu bạn có một cột khác sẽ được trả về nếu giá trị là null, bạn có thể sử dụng COALESCE biểu thức như thế này:
SELECT COALESCE(ProductName, P_Id) AS Product...