Sql server 如何在SQL中从表列中选择xml节点值
我有一个文本数据类型的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
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
名称空间URIhttp://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';
它正在工作。需要包含日期时间而不是日期。非常感谢。