Du kan använda ISNULL flera gånger i samma SQL-sats för olika kolumner, men du måste skriva det separat för varje kolumn:
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
Om du bygger en dynamisk SQL-fråga kan du teoretiskt sett samla en lista med kolumner i tabellen och generera en fråga med ISNULL på var och en. Till exempel:
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
Den här koden har problem när man konverterar vissa kolumntyper som tidsstämplar till en nvarchar, men den illustrerar tekniken.
Observera att om du hade en annan kolumn som skulle returneras om ett värde är null, kan du använda COALESCE uttryck som detta:
SELECT COALESCE(ProductName, P_Id) AS Product...