異なる列に対して同じ SQL ステートメントで ISNULL を複数回使用できますが、列ごとに個別に記述する必要があります。
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
プレ>動的 SQL クエリを作成している場合、理論的には、テーブル内の列のリストを収集し、それぞれに ISNULL を使用してクエリを生成できます。例:
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
プレ>このコードは、タイムスタンプなどの一部の列タイプを nvarchar に変換する際に問題がありますが、手法を示しています。
値が null の場合に返される別の列がある場合は、 合体 このような表現:
SELECT COALESCE(ProductName, P_Id) AS Product...
プレ>