由于命名空间的原因,简单的 XQuery 不工作

Simple XQuery Not Working Due to Namespace

我有一个 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 文档中删除名称空间,我的查询 returns CreateDate。

您的查询不包含命名空间。您可以这样做以包含命名空间:

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