Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML到SQL Server表/列返回NULL_Sql_Sql Server_Xml_Xquery - Fatal编程技术网

XML到SQL Server表/列返回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

我有一个以这种格式存储的XML。当我使用下面的代码时,它只返回NULL。这里有我遗漏的东西吗??提前谢谢

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; |
+---------------+-----------------------+