选择 SQL 查询从 ntext 列获取 xml 节点值?

2024-04-21

我想从 NTEXT 列获取一个 xml 节点值,该列包含基于 where 子句查询另一个 xml 节点值的 xml。RDBMS 类型:Microsoft SQL Server T-SQL这里:我想根据 StoreId where 子句值获取 Code 节点值。我怎样才能得到它? 输入:100 输出:ABCDE

例如:

<root>
  <StoreProfile>
    <General>
     <StoreId>100</StoreId>
     <Code>ABCDE</Code>
    </General>
  </StoreProfile>
</root>

如果您使用的是 SQL Server 2005 或 2008,您可以像这样使用 XQuery:

有关 XQuery 的更多信息,请参见XQuery 语言参考 http://msdn.microsoft.com/en-us/library/ms189075.aspx

DECLARE @storeId INT
SET @storeId = 100

CREATE TABLE #TestTable
(
    xmlColumn NTEXT
)

INSERT INTO #TestTable (xmlColumn) Values('<root><StoreProfile><General><StoreId>100</StoreId><Code>ABCDE</Code></General></StoreProfile></root>')
INSERT INTO #TestTable (xmlColumn) Values('<root><StoreProfile><General><StoreId>200</StoreId><Code>FGHIJ</Code></General></StoreProfile></root>')

SELECT 
    StoreProfile.value('Code[1]', 'nvarchar(10)') as Code 
FROM #TestTable
    CROSS APPLY (SELECT CAST(xmlColumn AS XML)) AS A(B) 
    CROSS APPLY A.B.nodes('//root/StoreProfile/General[StoreId = sql:variable("@storeId")]') AS StoreProfiles(StoreProfile)

DROP TABLE #TestTable
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择 SQL 查询从 ntext 列获取 xml 节点值? 的相关文章

随机推荐