You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数据库表的XML列数据插入至同结构表,以及读取XML节点属性至含Title和Value列的表

从XML列提取数据插入目标表 & 复制XML列到同结构表的解决方案

我来帮你搞定这两个SQL操作的需求,直接上实用的代码和清晰的解释:

1. 提取XML中的Title和Value属性插入目标表

你的prs_Decrees表里的Bookmarks列是XML类型,里面嵌套了多个<Bookmark>节点,每个节点都带Title和Value属性。我们可以用SQL Server的XQuery功能来解析这些属性,然后批量插入到你的目标表中。

假设你的目标表叫TargetBookmarks,结构是(Title VARCHAR(255), Value VARCHAR(255)),直接用下面的语句就行:

INSERT INTO TargetBookmarks (Title, Value)
SELECT
    BookmarkNode.value('@Title', 'VARCHAR(255)') AS Title,
    BookmarkNode.value('@Value', 'VARCHAR(255)') AS Value
FROM
    prs_Decrees
CROSS APPLY
    Bookmarks.nodes('/Bookmarks/Bookmark') AS Bookmarks(BookmarkNode);

简单说下逻辑:

  • nodes('/Bookmarks/Bookmark')会把XML里的每个<Bookmark>节点拆成单独的行,这样就能逐个处理每个书签
  • value('@Title', 'VARCHAR(255)')用来提取节点的Title属性值,第二个参数是要转换成的SQL数据类型,你可以根据实际数据长度调整类型或长度(比如用NVARCHAR或者更大的长度)
  • CROSS APPLY用来关联原表和拆分后的节点行,保证每一个书签节点都被提取出来插入目标表

2. 将XML列数据复制到同结构的其他表

如果目标表和prs_Decrees的结构完全一致(比如也有一个Bookmarks XML列),那操作就非常简单,用常规的INSERT...SELECT语句就能批量复制:

INSERT INTO TargetDecrees (Bookmarks) -- 如果还有其他需要同步的列,直接加在括号里就行
SELECT Bookmarks
FROM prs_Decrees;

举个例子,如果目标表还有ID、CreateTime这类列需要一起复制,就改成:

INSERT INTO TargetDecrees (ID, Bookmarks, CreateTime)
SELECT ID, Bookmarks, CreateTime
FROM prs_Decrees;

内容的提问来源于stack exchange,提问作者mehrab habibi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:07:49