使用 SQLServer2008R2
我目前在 XML 标签内(不在它们之间)有带有数据的 XML 标签,例如:
<zooid="1"><animals key="all" zebras="22" dogs="0" birds="4" /><animals key="all" workers="yes" vacation="occasion" /> ... *(more)*</zooid>
<zooid="2"><animals key="house" zebras="0" dogs="1" birds="2" /><animals key="house" workers="no" vacation="no" /> ... *(more)*</zoodid>
如果我查询 XML 或对它使用 value 函数,它会返回空白值,因为它试图在标签之间读取 - 其中不存在任何值。我需要它来读取标签内部,将等号之前的值解析为列,将引号之间的值解析为这些列中的值(当然,我可以创建一个可以执行此操作的函数,但这会非常细致,我很好奇这样的东西是否已经存在)。在列中应该是这样的:
Key | Zebras | Dogs | Birds | Key | Workers | Vacation | ... *(more)*
...这在数据行中:
all | 22 | 0 | 4 | all | yes | occasion | ... *(more)*
house | 0 | 1 | 2 | house | no | no | ... *(more)*
所以最终的输出(现在只使用从头开始的两个 XML 行),看起来像下面的表格形式的数据:
Key | Zebras | Dogs | Birds | Key | Workers | Vacation | ... *(more)*
================================================================
all | 22 | 0 | 4 | all | yes | occasion | ... *(more)*
house | 0 | 1 | 2 | house | no | no | ... *(more)*
除了查询 XML、使用该.query
工具甚至尝试该.node
工具(使用CROSS APPLY
见此线程)之外,我无法生成它。