XML到SQL Server表/列返回NULL
我有一个以这种格式存储的XML。当我使用下面的代码时,它只返回NULL。这里有我遗漏的东西吗??提前谢谢XML到SQL Server表/列返回NULL,sql,sql-server,xml,xquery,Sql,Sql Server,Xml,Xquery,我有一个以这种格式存储的XML。当我使用下面的代码时,它只返回NULL。这里有我遗漏的东西吗??提前谢谢 Declare @xmlData xml; set @xmlData = '<ProcessTask ProcessFile="Process1" TaskID="MyTsk" URL="www.google.com"> <LinkParams UserId="007" CountryI
Declare @xmlData xml;
set @xmlData =
'<ProcessTask ProcessFile="Process1" TaskID="MyTsk" URL="www.google.com">
<LinkParams UserId="007" CountryId="1" Email="james.bond@gmail.com;" EmailSubject="New Mission" EndDate="2022-01-01" />
</ProcessTask>'
SELECT
n.value('(./UserId/text())[1]','int') as ArchiveUserId
, n.value('(./Email/text())[1]','Varchar(500)') as Email
FROM @xmlData.nodes('/ProcessTask/LinkParams') as a(n)
Declare@xmldataxml;
set@xmlData=
'
'
选择
n、 值('(./UserId/text())[1]','int')作为ArchiveUserId
,n.value(“(./Email/text())[1]”,“/Varchar(500)”作为电子邮件
从@xmlData.nodes('/ProcessTask/LinkParams')以(n)形式发送
所需数据位于属性中。这就是为什么.value()
方法的XPath表达式应该反映它的原因
SQL
Declare @xmlData XML =
N'<ProcessTask ProcessFile="Process1" TaskID="MyTsk" URL="www.google.com">
<LinkParams UserId="007" CountryId="1" Email="james.bond@gmail.com;"
EmailSubject="New Mission" EndDate="2022-01-01"/>
</ProcessTask>';
SELECT n.value('@UserId','INT') as ArchiveUserId
, n.value('@Email','VARCHAR(500)') as Email
FROM @xmlData.nodes('/ProcessTask/LinkParams') as a(n);
@DeepenRajDawadi,很高兴听到提议的解决方案对您有效。请别忘了把它标为答案。
+---------------+-----------------------+
| ArchiveUserId | Email |
+---------------+-----------------------+
| 7 | james.bond@gmail.com; |
+---------------+-----------------------+