DB2用户定义函数实现多种语言的排序
2007-05-20 16:19:14 来源:WEB开发网核心提示: 必须从 Unicode 数据库调用 SORTKEY,否则返回一个错误,DB2用户定义函数实现多种语言的排序(5),(SQLSTATE SKUTF),示例example.db2 中的 Unicode 字符example.db2 文件包含几个用 UTF-8 进行编码的字符,英语从字母 A 排序
必须从 Unicode 数据库调用 SORTKEY,否则返回一个错误。(SQLSTATE SKUTF)。
示例
example.db2 中的 Unicode 字符
example.db2 文件包含几个用 UTF-8 进行编码的字符。理想情况下,应该从一个 Unicode shell 调用下面的示例。如果不是从 Unicode shell 调用示例,那么表 SORTKEY_GERMAN1 和 SORTKEY_GERMAN2 会包含不正确的数据,示例 4 会失败。
为了允许从非 Unicode shell 调用示例,可以将注册表变量 DB2CODEPAGE 设置为 1208。这会使 DB2 客户机以 UTF-8 格式处理数据。加重音的字符无法正确显示,但是示例可以正确地运行。
为了设置 DB2CODEPAGE 并运行示例,执行以下命令:
db2 terminate
db2set DB2CODEPAGE=1208
db2 connect to sample
db2 -tf example.db2
当 DB2CODEPAGE 设置为 1208 时,它对其他应用程序可能会产生某些意料之外的效果。在运行示例之后,可以用以下命令恢复 DB2CODEPAGE:
db2 terminate
db2set DB2CODEPAGE=
这些示例使用的表、数据和查询可以在文件 example.db2 中找到。当连接数据库时,可以用以下命令执行它:
db2 -tf example.db2
ORDER BY
不同的语言用不同的规则来决定字母的次序。例如,英语从字母 A 排序到 Z,没有例外,如第一个示例所示。
查询 1. 用英语排序规则进行排序
SELECT NAME FROM SORTKEY_NAMES
ORDER BY ICU.SORTKEY(NAME, 'LEN')
结果 1. 用英语排序规则进行排序
码
NAME
--------------------
Alice
Celine
Charles
Cindy
Don
Hillary
Ian
Sam
更多精彩
赞助商链接