我们知道, 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 加到相应的排序子句中即可。