我有一个SQL Server 2008 R2中称为tblFiles的简单表。如何为XML数据执行SQL查询(在SQLServer中)?
tblFiles如以下列:
- FILEID - (int)的主键
- 文件名 - (nvarchar的255)
- 元数据 - (XML)已被配置为与一个XML模式用于 验证。
的模式如下:
<?xml version="1.0" encoding="UTF-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="FileMetaData">
<xs:complexType>
<xs:sequence>
<xs:element name="CreatedDate" type="xs:time"/>
<xs:element name="ModifiedDate" type="xs:time"/>
<xs:element name="AccessDate" type="xs:time"/>
</xs:sequence>
<xs:attribute name="Length" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:schema>
记录中的一个示例XML元数据条目是:
<?xml version="1.0"?>
<FileMetaData Length="26">
<CreatedDate>10:13:53.1008</CreatedDate>
<ModifiedDate>10:14:02.0327</ModifiedDate>
<AccessDate>10:13:53.1008</AccessDate>
</FileMetaData>
我填充数据库文件的负载及其关联元数据。
我想解决的是如何编写一个查询,该查询将返回在X和Y之间的XML中设置了长度的所有记录?
如何导航SQL查询中的XML?
TIA
我设法找出另一种方式来做到这一点使用以及查询: SELECT的fileid,文件名,元数据 从文件中 WHERE MetaData.exist('/ FileMetaData [@Length> 25]')= 1 AND MetaData.exist('/ FileMetaData [@Length <30]')= 1 我已经尝试了这两种方法,但我列在这里的有很多更好的性能(顺便说一下,我在MetaData列上有一个XML索引)。 – millie