日期:2014-05-16  浏览次数:20528 次

怎样将DB2的排序转成Java的排序

我们知道, ?DB2中排序是比较特殊的, ?它的排序是先 小写, 再大写, 然后再是数字。 ?但是普通的ascii 排序或者说我们用到Java 里的排序是 先数字 , 在大写 最好才是小写。 ? 怎样才能将DB2的排序转成Java 的排序呢 , ?在Db2有一个比较有用的函数 translate ,?

? ? ? translate ( ? value, ? '目标集', '源集') ? ? 它可以将 源集中的在value 出现的值转成相应的 目标集对应位置的值。

?

?

比如 select ?Name, ?translate ( ?Name, ? '123', ? 'abc') ?from someTable;

?

可以的结果会是:

? ? abb ? ? 122

? ? abc ? ? ?123

? ? ccc ? ? ? 333

?

这样我们的写法

?

?translate( ?someColumnToOrder,

? ? ? ? ?'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',

? ? ? ? ?'0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ' )

?

?

如果要求大小写不敏感:

?

translate( ?someColumnToOrder,

? ? ? ? ?'abcdefghijkkmmooqqssuuwwyyAACCEEGGIIKKMMOOQQSSUUWWYY0022446688',

? ? ? ? ?'0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ')

?

?

将这个 translate 加到相应的排序子句中即可。

?