Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 处理XML中的空值_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 处理XML中的空值

Sql 处理XML中的空值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,结果中不需要空值。 我希望结果被这样的东西包装起来 即使col1为空或不为空 在此示例中,表不包含col2=63895746的任何行,因此我将得到一个空结果集,因此type指令将使其为NULL并返回它请尝试: SELECT Col1 FROM Table WHERE Col2 = 63895746 ORDER BY Col FOR XML PATH,TYPE 尝试: 您需要使用元素xsini 如果失败,则可以嵌套查询: 选择ISNULLd

结果中不需要空值。 我希望结果被这样的东西包装起来 即使col1为空或不为空

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

请尝试:

            SELECT Col1
    FROM Table
    WHERE Col2 = 63895746
    ORDER BY Col
    FOR XML PATH,TYPE
尝试:


您需要使用元素xsini

如果失败,则可以嵌套查询:

选择ISNULLdata.Col1,“”作为Col1 从…起 选择Col1 从桌子上 式中,Col2=63895746 上校命令 对于XML路径,键入 资料


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

您需要使用ELEMENTS XSINIL

如果失败,则可以嵌套查询:

选择ISNULLdata.Col1,“”作为Col1 从…起 选择Col1 从桌子上 式中,Col2=63895746 上校命令 对于XML路径,键入 资料


不在我的机器上,因此测试起来有点困难。

如果Col1是字符串,则可以使用以下方法实现此目的:

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

如果有空值,则会得到一个空标记。如果Col1是字符串,则可以使用以下方法实现此目的:

SELECT 
    ISNULL(Col1, '< Cols >< /Cols>') AS Col1
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
SELECT COALESCE(Col1,'')
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
如果你有一个空值,它会给你一个空标签

SELECT COALESCE(Col1,'')
FROM Table
WHERE Col2 = 63895746
ORDER BY Col
FOR XML PATH,TYPE
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
怎么样

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

我认为,按照微软的说法,这是一种使用

;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;
作为选项,后面为xml路径


我认为,按照微软的说法,这是一种使用

;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;
作为选项,后面为xml路径


你的预期产量是多少?如果COL1为NULL,那么result=您期望的输出是什么?如果COL1为NULL,那么result=您也可以尝试STUFF命令:@ashleyjohn-xsini听起来正是您想要的。它至少需要一个非空列。。。原因很简单,如果没有任何内容,则不会返回任何行。如果您想返回所有行,甚至是您感兴趣的列恰好为空的行,最简单的方法可能是在查询中选择第二列。您还可以尝试STUFF命令:@Ashley John-xsini听起来正是您想要的。它至少需要一个非空列。。。原因很简单,如果没有任何内容,则不会返回任何行。如果您想返回所有行,甚至是您感兴趣的列恰好为空的行,也许最简单的方法是在查询中选择第二列。是的,在我的笔记本电脑上的SQL 2012 LocalDB上运行良好,我在发布之前对其进行了测试。是的,在我的笔记本电脑上的SQL 2012 LocalDB上运行良好,我在发布之前测试了它。对这个答案稍加调整,我得到了我想要的。对这个答案稍加调整,我得到了我想要的。