U kunt ISNULL meerdere keren in dezelfde SQL-instructie voor verschillende kolommen gebruiken, maar u moet het voor elke kolom afzonderlijk schrijven:
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
Als u een dynamische SQL-query bouwt, kunt u in theorie een lijst met kolommen in de tabel verzamelen en op elke kolom een query genereren met ISNULL. Bijvoorbeeld:
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
Deze code heeft problemen bij het converteren van sommige kolomtypen zoals tijdstempels naar een nvarchar, maar het illustreert de techniek.
Merk op dat als u een andere kolom had die moet worden geretourneerd als een waarde null is, u de COALESCE uitdrukking als deze:
SELECT COALESCE(ProductName, P_Id) AS Product...