使用 FOR XML PATH 產生 XML 格式時,遇到 NULL 該如何處理?

本文將介紹使用 FOR XML PATH 產生 XML 格式時,遇到 NULL 該如何處理?

當您嘗試利用 FOR XML PATH 產生 XML 格式時,若遇到 Result Set 為 Null 時,會導致整個查詢結果為 Null ,若您想要在查不到資料時,可以顯示自訂的內容,本文將提供可能的作法。

  • 以下程式碼示範將 Northwind 資料庫的 Region 資料表查詢結果以 XML 格式呈現:

 

   1:  DECLARE @xml  NVARCHAR(MAX)    
   2:  SET @xml =  CAST (
   3:      (SELECT RegionID,  LTRIM(RTRIM(RegionDescription)) AS RegionDescription
   4:      FROM  Region
   5:      WHERE RegionID = 1
   6:      FOR XML PATH('Region'), TYPE) 
   7:      AS NVARCHAR(MAX) )
   8:  SELECT @xml

 

執行結果如下:

   1:  <Region>
   2:    <RegionID>1</RegionID>
   3:    <RegionDescription>Eastern</RegionDescription>
   4:  </Region>

 

  • 若您輸入一個不存在的 RegionID 會得到下列的結果:

 

image

 

  • 若您想要在查不到資料的時候顯示找不到資料而非 NULL,可以下列的 T-SQL 來達到這個目的:

 

   1:  DECLARE @xml  NVARCHAR(MAX) 
   2:  SET @xml =  CAST ( 
   3:      (SELECT ISNULL(t.td,'找不到資料')
   4:          FROM 
   5:          (
   6:          (SELECT RegionID,  LTRIM(RTRIM(RegionDescription)) AS RegionDescription
   7:          FROM  Region
   8:          WHERE RegionID = 10
   9:          FOR XML PATH('Region'), TYPE                
  10:      )) t(td))
  11:  AS NVARCHAR(MAX) )
  12:   
  13:  SELECT @xml

 

執行結果如下:

 

image