ISNULL můžete použít vícekrát ve stejném příkazu SQL pro různé sloupce, ale musíte jej napsat samostatně pro každý sloupec:
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
Pokud vytváříte dynamický SQL dotaz, můžete teoreticky shromáždit seznam sloupců v tabulce a vygenerovat dotaz s ISNULL v každém z nich. Například:
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
Tento kód má problémy při převodu některých typů sloupců, jako jsou časová razítka, na nvarchar, ale ilustruje techniku.
Všimněte si, že pokud máte další sloupec, který by měl být vrácen, pokud je hodnota null, můžete použít COALESCE výraz jako tento:
SELECT COALESCE(ProductName, P_Id) AS Product...