Sql server 如何在SQL中从表列中选择xml节点值

Sql server 如何在SQL中从表列中选择xml节点值,sql-server,xml,tsql,Sql Server,Xml,Tsql,我有一个文本数据类型的sql表列,其中包含xml值。当我尝试选择时,它给出了一个空值。有人能帮我吗 表格结构 Sid (int) | xmlresults (text) | recivedDate (Datetime) ;WITH XMLNAMESPACES (N'http://www.w3.org/2001/XMLSchema' AS NS) SELECT X.S.value('(NS:examinationDate)[1]', 'VARCHAR(MAX)') as xmlvalue FRO

我有一个文本数据类型的sql表列,其中包含xml值。当我尝试选择时,它给出了一个空值。有人能帮我吗

表格结构

Sid (int) | xmlresults (text) | recivedDate (Datetime)
;WITH XMLNAMESPACES (N'http://www.w3.org/2001/XMLSchema' AS NS)
SELECT
X.S.value('(NS:examinationDate)[1]', 'VARCHAR(MAX)') as xmlvalue
FROM examinationresults er
CROSS APPLY (SELECT CAST(xmlresults AS XML)) AS [XML](xmlresults)
CROSS APPLY [XML].xmlresults.nodes('/NS:NewExamResults/NS:Table1') AS X(S)
where  er.sid='8596123'
用于检索的查询

Sid (int) | xmlresults (text) | recivedDate (Datetime)
;WITH XMLNAMESPACES (N'http://www.w3.org/2001/XMLSchema' AS NS)
SELECT
X.S.value('(NS:examinationDate)[1]', 'VARCHAR(MAX)') as xmlvalue
FROM examinationresults er
CROSS APPLY (SELECT CAST(xmlresults AS XML)) AS [XML](xmlresults)
CROSS APPLY [XML].xmlresults.nodes('/NS:NewExamResults/NS:Table1') AS X(S)
where  er.sid='8596123'
XML数据

<NewExamResultsType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <NewExamResults xmlns="urn:ex.likeexam.com">
    <Table>
      <rowCount>1</rowCount>
    </Table>
    <Table1>
      <StudId>9447524123</StudId>
      <examinationDate>26/10/2019</examinationDate>
      <VerificationDate>111111111</VerificationDate>
      <examiner>Williams</examiner>
      <ExamResults>
        <ExamResult>
          <ExamCode>110</ExamCode>
          <StudName>Tony K</StudName>
          <StudCode>K</StudCode>
        </ExamResult>
      </ExamResults>
    </Table1>
  </NewExamResults>
</NewExamResultsType>

1.
9447524123
26/10/2019
111111111
威廉姆斯
110
托尼K
K

名称空间URI
http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema-instance
示例文档中似乎没有引用。重要的名称空间URI是
urn:ex.likeexam.com
,其中包含
NewExamResults
节点及其所有子节点。请尝试以下查询

使用xmlnamespace的
(
N'urn:ex.likeexam.com'as le
)
选择convert(日期,表1.value(N'(le:examicationdate/text())[1]',N'varchar(10')),103)作为检查日期
根据考试结果
交叉应用(选择强制转换(xmlresults作为xml))c1(xmlValue)
交叉应用xmlValue.nodes(N'/NewExamResultsType/le:NewExamResults/le:Table1')c2(Table1)
其中sid='8596123';

它正在工作。需要包含日期时间而不是日期。非常感谢。