电脑技术学习

DB2用户定义函数实现多种语言的排序

dn001
  当在 DB2 UDB 数据库中存储多语种数据时,Unicode 往往是惟一一种能够适应整个数据范围的编码。DB2 可以存储和处理 Unicode 数据,但是它的排序功能只限于二进制排序和三种文化排序。另外,一个数据库只能有一种排序规则,这是在创建数据库时决定的。对于需要支持多种语言的用户和数据的数据库,这些排序限制是一个明显的难题。  IBM 创建了一个用于治理 Unicode 数据的函数库,称为 ICU(International Components for Unicode)。这个库为 C 和 Java™ 编程语言提供了一整套操作 Unicode 数据的函数。这个库是在一种无限制的开放源码许可证下发布的,这使它可以在许多应用程序中使用。  ICU 提供的函数实现了标准的 Unicode Collation Algorithm(UCA)以及许多文化调整功能。很轻易将适当的 ICU 函数组合成一个 UDF(用户定义函数),从而让 DB2 可以充分利用 ICU 的排序支持。(随便说一句,DB2 for Linux, UNIX, and Windows 就是使用 ICU 库来实现在 Unicode 数据上支持的三种文化排序。)  本文主要关注 DB2 V8 for Linux, UNIX, and Windows,但是这个 UDF 示例也可以用在即将发布的 Viper 上。这个 UDF 也应该能够用在 DB2 V7 FP3 或更高版本上,但是这没有经过测试。另外,这个 UDF 可能能够用在 DB2 for zSeries® 和 iSeries™ 上,但是这没有经过测试,本文也不讨论这些平台。  安装示例数据库  本文假设要使用的数据库称为 SAMPLE,但是可以使用任何数据库。无论使用哪个数据库,它必须是 Unicode 数据库。为了判定一个数据库是否是 Unicode 数据库,执行以下命令:  db2 get database configuration for sample  接近配置信息顶部的 “Database code page 条目必须是 “utf-8。假如没有 Unicode 数据库可用,那么可以用以下命令创建一个:;