Możesz użyć ISNULL wiele razy w tej samej instrukcji SQL dla różnych kolumn, ale musisz napisać to osobno dla każdej kolumny:
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
Jeśli tworzysz dynamiczne zapytanie SQL, możesz teoretycznie zebrać listę kolumn w tabeli i wygenerować zapytanie z ISNULL na każdej z nich. Na przykład:
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
Ten kod ma problemy podczas konwertowania niektórych typów kolumn, takich jak znaczniki czasu, na nvarchar, ale ilustruje technikę.
Pamiętaj, że jeśli masz inną kolumnę, która powinna zostać zwrócona, jeśli wartość ma wartość null, możesz użyć POŁĄCZENIE wyrażenie takie jak to:
SELECT COALESCE(ProductName, P_Id) AS Product...