WEB开发网
开发学院数据库MSSQL Server SQL2005用XML数据类型进行数据建模 阅读

SQL2005用XML数据类型进行数据建模

 2007-05-19 09:42:35 来源:WEB开发网   
核心提示: CREATE XML INDEX idx_xCol_Property on T (xCol)USING XML INDEX idx_xCol FOR PROPERTY示例:基于值的查询在以下查询中,子代轴或自身轴 (//) 指定了部分路径,SQL2005用XML数据类型进行数据建模(6),
CREATE XML INDEX idx_xCol_Property on T (xCol)
USING XML INDEX idx_xCol FOR PROPERTY

示例:基于值的查询

在以下查询中,子代轴或自身轴 (//) 指定了部分路径,以便基于 ISBN 值的查找可以因为使用 VALUE 索引而受益:

SELECT xCol
FROM   T
WHERE  xCol.exist ('//book[@ISBN = "1-8610-0157-6"]') = 1

VALUE 索引按如下方式创建:

CREATE XML INDEX idx_xCol_Value on T (xCol)
USING XML INDEX idx_xCol FOR VALUE

XML 列上的全文索引

您可以在 XML 列上创建全文索引,从而将 XML 值的内容编入索引,而忽略 XML 标记。属性值没有被编入全文索引(因为它们被视为标记的一部分),并且元素标记被用作标记边界。在某些情况下,可以将全文搜索与 XML 索引用法结合起来:

• 首先,使用 SQL 全文搜索筛选感兴趣的 XML 值。

• 接下来,查询这些 XML 值,这会使用 XML 列上的 XML 索引。

示例:将全文搜索与 XML 查询结合起来

在 XML 列上创建全文索引之后,以下查询将检查 XML 值是否在书名中包含单词"custom":

SELECT *
FROM  T
WHERE CONTAINS(xCol,'custom')
AND  xCol.exist('/book/title/text()[contains(.,"custom")]') =1

CONTAINS() 方法使用全文索引,将文档中任何地方包含单词"custom"的 XML 值组合为一个子集。exist() 子句确保单词"custom"出现在书名中。

使用 CONTAINS() 和 XQuery contains() 的全文搜索具有不同的语义。后者是子字符串匹配,而前者则是使用单词衍生的标记匹配。因此,如果要搜索标题中的字符串 "run",则 "run"、"runs" 和 "running" 都将匹配,因为全文 CONTAINS() 和 Xquery contains() 都满足。然而,上述查询不匹配标题中的单词"customizable"。(全文 CONTAINS() 失败,而 Xquery contains() 被满足)。通常,对于纯粹的子字符串匹配,应该删除全文 CONTAINS() 子句。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQL XML 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接