小编sql*_*net的帖子

将SQL表转换为XML,并将列作为父节点

我正在尝试将表转换为XML结构,我希望表中的一列表示父节点,另一列表示子节点.

我有部分路,但我没有完整的解决方案.我需要TABLE_NAME列转换为xml父节点,COLUMN_NAME列转换为子节点.如果我执行以下操作,我会得到嵌套,但我也得到多个父节点.

select
 TABLE_NAME AS 'tn',
 COLUMN_NAME AS 'tn/cn'
from (
 select 'TABLE_A' AS TABLE_NAME, 'COLUMN_1' AS COLUMN_NAME
 UNION ALL
 select 'TABLE_A' AS TABLE_NAME, 'COLUMN_2' AS COLUMN_NAME
 UNION ALL
 select 'TABLE_B' AS TABLE_NAME, 'COLUMN_1' AS COLUMN_NAME
 UNION ALL
 select 'TABLE_B' AS TABLE_NAME, 'COLUMN_2' AS COLUMN_NAME
) x
for xml path(''), ROOT('datatable')
Run Code Online (Sandbox Code Playgroud)

OUPUT >>>

<datatable>
  <tn>TABLE_A<cn>COLUMN_1</cn></tn>
  <tn>TABLE_A<cn>COLUMN_2</cn></tn>
  <tn>TABLE_B<cn>COLUMN_1</cn></tn>
  <tn>TABLE_B<cn>COLUMN_2</cn></tn>
</datatable>
Run Code Online (Sandbox Code Playgroud)

期望的产量>>>

<datatable>
  <TABLE_A>
   <cn>COLUMN_1</cn>
   <cn>COLUMN_2</cn>
  </TABLE_A>
  <TABLE_B>
    <cn>COLUMN_1</cn>
    <cn>COLUMN_2</cn>
  </TABLE_B>
</datatable>
Run Code Online (Sandbox Code Playgroud)

这可能还是我在做梦?没有XML EXPLICIT是可能的,还是这是EXPLICIT的用途?

我一直在尝试的另一种可能性是填充xml然后应用xquery,但还没有喜悦.

谢谢,

加里

xml sql sql-server sql-server-2005 sql-server-2008

6
推荐指数
1
解决办法
3536
查看次数

标签 统计

sql ×1

sql-server ×1

sql-server-2005 ×1

sql-server-2008 ×1

xml ×1