sql - 为什么 XML 结果在某些选择类型上给出 NULL?
问题描述
例如,使用递归 CTE 时,有一些检查可确保用户无法创建问题循环,其中配方的成分就是配方。尝试通过 For XML 提取用户响应数据给出了一个我不明白的奇怪结果。
我可以用第三个 CTE 解决这个问题,但我找不到任何可以解释我得到的结果的东西(我可能对谷歌的问题措辞不够好)。
设置给出相同结果的代码 -
WITH cte1 AS (
SELECT 'A' AS Val
UNION all
SELECT 'B' AS Val
UNION all
SELECT 'C' AS Val
),
cte2 AS (
SELECT 'A' AS Val
UNION all
SELECT 'B' AS Val
UNION all
SELECT 'D' AS Val
)
最后一步:
cte3 as
(
SELECT Val FROM cte1
intersect
SELECT Val FROM cte2
)
SELECT (SELECT Val + ' ' FROM cte3 FOR XML PATH(''))
或者
SELECT Val + ' ' FROM cte1
intersect
SELECT Val + ' ' FROM cte2
FOR XML PATH('')
或者
SELECT (
SELECT Val + ' ' FROM cte1
intersect
SELECT Val + ' ' FROM cte2
FOR XML PATH('')
)
第一个选项给出预期的“A B”。
第二个选项也提供“A B”,但作为 XML 输出。
但是,第三个选项给出了 NULL。这是为什么?
解决方案
推荐阅读
- android - 使用地图片段(kotlin)时,活动在充气时崩溃
- r - 使用关键字列表从数据表中提取完整行
- neo4j - 需要帮助将一些关系从 Access 转移到 Neo4j
- python - 如何解析或解码 CAN 总线日志文件中的十六进制数据?
- python - 为什么修改类属性不会修改 Python 中的对象属性?
- c# - 保留对子类的额外引用或强制转换为子类以调用特定于该子类的方法是更好的做法吗?
- python - 用另一个文件中列表的每一行替换文件中的特定文本
- vue.js - 在 Vue CLI 3 项目中使用自定义 Bootstrap SASS 的步骤是什么?
- java - Thymeleaf 请求参数空值问题
- javascript - 如何在 css 中使用 javaScript 对象键的值?