回答

收藏

从MS-SQL Server 2008中的XML字段中提取值

技术问答 技术问答 65 人阅读 | 0 人回复 | 2023-09-12

我试图单独存储XML字段中的MS-SQL Server
. d0 \& E$ |* k; R: h. S) X从2008年数据库中提取四段信息。这是我第一次必须使用它XML,所以我遇到了一些麻烦,这就是为什么我只需要提取数据。我试图用其他帖子来解决我的问题,但显然我没有运气。
' Y7 s3 D: f2 ~5 I0 [2 h% O这四个信息首先是项目经理,然后是价值,其次是利润中心,然后是价值。来自利润中心的值将用于连接两个表。以下是存储在这个字段中的XML数据示例。
/ @( }7 i9 n6 y                            Project Manager       DBD                 Profit Center       211         因此,在这个例子中,我需要使用 Profit Center 211值将两个表全部连接起来MS-SQL查询中。信息表可称为. h. t6 \" L7 x& Z4 n" P
tblProfitCenter保存该信息的字段为 prftData”。# ^" c- d0 v! T: E/ U) L
如果  prftData数据不是XML格式是包含利润中心的常规整数字段ID并执行联系,将执行同样的工作。5 S9 h# ^  n3 q5 {$ v
                SELECT md.LName,md.FName,pc.ProfitCenterName    FROM tblMainDataCenter md    LEFT OUTER JOIN tblProfitCenter pc ON md.pcID = pc.prftData这是我从事的项目,需要超出这个范围。通常,我会学习XML解决这个问题,但时间不允许。没有机会学习XML以前,我将不胜感激。" L1 v! j. D) @( {# {$ m; K
                                                                , m( q- h/ j2 b$ j, g
    解决方案:                                                               
# T/ K) y& S2 c+ B8 l2 O2 P* x                                                                您可以使用valueXML列出的函数从XML提取数据如下:$ `/ W! j( S  ?- E
SELECT col.value('(/ArrayOfEntityPropertyOfString/EntityPropertyOfString[Name=&quotrofit Center"]/Value)[1]','int')FROM tbl假设你的手表已经命名了tbl,而XML列已命名col。( t2 x8 O# L# U
第一个参数是XPath 1表达式,第二个参数是目标数据类型。请注意,这些字符串必须是SQL
8 H4 }& c% P! GServer固定字符串,不能动态生成(例如,通过字符串联)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则