处理FOR XML中的NULL值

Ash*_*ohn 1 sql sql-server sql-server-2008

            SELECT Col1
    FROM Table
    WHERE Col2 = 63895746
    ORDER BY Col
    FOR XML PATH,TYPE
Run Code Online (Sandbox Code Playgroud)

我在结果中不需要NULLS.我希望结果被<Cols> </ Cols>包裹,即使col1为null也不是

在这个例子中,Table不包含col2 = 63895746的任何行,所以我将获得一个空结果集,因此type指令将使其为NULL并返回它

two*_*rse 5

您需要使用 ELEMENTS XSINIL;

包括空列空元素

如果不能嵌套查询:

SELECT ISNULL(data.Col1,'< Cols >< /Cols >') AS Col1
FROM (
SELECT Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
)

不是在我的机器上,所以测试起来有点困难。


shu*_*nty 5

怎么样

;with mytmp (f1) as (
  SELECT Col1
  FROM Table
  WHERE Col1 = 123456
  ORDER BY Col1
  FOR XML PATH('col'),root('cols'),TYPE
  )
select isnull(f1, '<cols></cols>')
from mytmp;
Run Code Online (Sandbox Code Playgroud)