WEB开发网
开发学院数据库DB2 用DB2 pureXML执行不区分大小写的高效搜索 阅读

用DB2 pureXML执行不区分大小写的高效搜索

 2009-03-04 16:38:23 来源:WEB开发网   
核心提示: UCA500R1_LEN_S2 导致 "cliche" = "Cliche" < "cliché"UCA500R1_LEN_S3 导致 "cliche" < "Cliche&

UCA500R1_LEN_S2 导致 "cliche" = "Cliche" < "cliché"

UCA500R1_LEN_S3 导致 "cliche" < "Cliche" < "cliché"

在 DB2 Information Center 中可以找到可以作为 UCA 排序规则名的所有组合(参见 参考资料)。

在不区分大小写的数据库中查询 XML 数据

因为此数据库使用排序规则名 UCA500R1 和强度级别 2,所以现在可以简化前面的查询,去掉 fn:upper-case() 函数(清单 5),就像所有数据都是大写的一样。无论搜索字符串是 “Paris” 或 “PARIS” 还是其他任何大小写组合,结果都是相同的。

清单 5. 选择 Paris 的客户

SELECT id, XMLCAST( XMLQUERY('$XMLDOC/Customer/city') AS VARCHAR(15)) AS city
FROM customer
WHERE XMLEXISTS('$XMLDOC/Customer[city = "PARIS"]'); 

图 2. 示例查询的结果

用DB2 pureXML执行不区分大小写的高效搜索 

如果通过添加 ORDER BY 子句按提取的 city 值排序,那么结果集仍然是相同的:PARIS、paris 和 Paris 被当作相同的值。

为了高效地查询此数据,尤其是在表中行数很大的情况下,应该用 XPath /Customer/city 创建一个 XML 索引,见 清单 6:

清单 6. 创建 XML 索引

   CREATE INDEX customer_lang_idx ON test (xmldoc)
GENERATE KEY USING XMLPATTERN '/Customer/city' AS SQL VARCHAR(15);

上一页  1 2 3 4 5  下一页

Tags:DB pureXML 执行

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