我有一个xml文档:
<ns0:Employee xmlns:ns0="http://namespace">
<EmployeeID></EmployeeID>
<Department></Department>
<FirstName> </FirstName>
<MiddleInitial />
<LastName></LastName>
<IsActive></IsActive>
<CreateDate>2017-07-25T14:18:14.513</CreateDate>
<UpdateDate>2018-01-25T16:58:52.733</UpdateDate>
<PrimaryRole></PrimaryRole>
<TempPassword></TempPassword>
<License></License>
<AccessLevelID></AccessLevelID>
<CompanyID></CompanyID>
<Schedule></Schedule>
</ns0:Employee>
我正在尝试从中获取CreateDate和UpdateDates。我尝试了以下内容:
select
[xmlcolumn].value('(/Employee/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table
但是这总是返回一个空值,尽管有一个CreateDate。如果我从xml文档中删除命名空间,我的查询将返回CreateDate。
答案 0 :(得分:3)
您的查询未包含命名空间。您可以这样做以包含命名空间:
select
[xmlcolumn].value('declare namespace ns0="http://namespace";(/ns0:Employee/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table
或者只是使用这个
select
[xmlcolumn].value('(/*/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table