SELECT Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
我在结果中不需要NULLS。 我希望结果被类似的东西包裹起来 < Cols>< / Cols>即使col1为null也不是
在这个示例中,Table不包含col2 = 63895746的任何行,因此我将获得一个空结果集,因此type指令将使其为NULL并返回
答案 0 :(得分: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;
答案 1 :(得分:4)
您需要使用ELEMENTS XSINIL;
including-null-columns-empty-elements
您无法嵌套查询:
SELECT ISNULL(data.Col1,&#39;&lt; Cols&gt;&lt; / Cols&gt;&#39;)AS Col1
FROM(
选择Col1
从表
在哪里Col2 = 63895746
Col的订单 FOR XML PATH,TYPE
)数据
不在我的机器上,因此测试时有点难度。
答案 2 :(得分:3)
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
答案 3 :(得分:0)
尝试:
SELECT
ISNULL(Col1, '< Cols >< /Cols>') AS Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
答案 4 :(得分:0)
如果Col1是一个字符串,那么您可以使用以下内容来实现此目的:
SELECT COALESCE(Col1,'')
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
如果你有一个空值
,这将给你一个空标签答案 5 :(得分:0)
SELECT
(select col1 AS '*' FOR XML PATH(''), TYPE) AS cols
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
答案 6 :(得分:0)
我认为,按照微软的说法,是使用
ELEMENTS XSINIL
作为选项,在xml路径之后