SELECT Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
我在结果中不需要 NULLS。我希望结果被 < Cols >< /Cols > 之类的东西包裹,即使 col1 是否为空
在这个例子中 Table 不包含 col2 = 63895746 的任何行,所以我会得到一个空的结果集,所以 type 指令会将它设为 NULL 并返回它
SELECT Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
我在结果中不需要 NULLS。我希望结果被 < Cols >< /Cols > 之类的东西包裹,即使 col1 是否为空
在这个例子中 Table 不包含 col2 = 63895746 的任何行,所以我会得到一个空的结果集,所以 type 指令会将它设为 NULL 并返回它
你需要使用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
) 数据
不在我的机器上,所以测试起来有点困难。
怎么样
;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;
SELECT T.X
FROM
(
SELECT Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH, TYPE
) AS T
FOR XML PATH('Cols'), TYPE
如果 Col1 是一个字符串,那么您可以使用以下方法来实现此目的:
SELECT COALESCE(Col1,'')
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
如果你有一个空值,那会给你一个空标签
我认为,根据微软,是使用
ELEMENTS XSINIL
作为选项,在用于 xml 路径之后
尝试:
SELECT
ISNULL(Col1, '< Cols >< /Cols>') AS Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE