我想从NTEXT列中获取一个xml节点值,该列包含基于在另一个xml节点值上查询的where子句的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语言参考。
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