Anda dapat menggunakan ISNULL beberapa kali dalam pernyataan SQL yang sama untuk kolom yang berbeda, tetapi Anda harus menulisnya secara terpisah untuk setiap kolom:
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
Jika Anda sedang membangun kueri SQL dinamis, Anda secara teoritis dapat mengumpulkan daftar kolom dalam tabel dan menghasilkan kueri dengan ISNULL pada masing-masing kolom. Misalnya:
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
Kode ini memiliki masalah saat mengonversi beberapa jenis kolom seperti stempel waktu ke nvarchar, tetapi ini menggambarkan tekniknya.
Perhatikan bahwa jika Anda memiliki kolom lain yang harus dikembalikan jika nilainya nol, Anda dapat menggunakan COALESCE ekspresinya seperti ini:
SELECT COALESCE(ProductName, P_Id) AS Product...