DB2 的中文排序一直是老大难,尤其碰上那些不常见的生僻字,真是挺头疼的。比如“泸”“汶”这种,按拼音应该排在 L 和 W 那一挂,结果一查数据库,顺序全乱了。

DB2 8.17.7.445 版本里,可以用个比较实用的函数——COLLATION_KEY_BIT来搞定这个问题。你只要在 SQL 里加一段像COLLATION_KEY_BIT(SELLOR_NAME,'UCA500R1_LZH_AN_CX_EX_FX_HX_NX_S3')这样的,就能让排序变得靠谱多了。排序规则也别选错,那个'UCA500R1_LZH_AN_CX_EX_FX_HX_NX_S3'是专门针对中文字符设计的,兼容性还不错。

要注意哦,不同版本的 DB2,排序规则支持不一样。如果你不是用的这个版本,最好先测试一下效果。可以弄个包含各种生僻字的数据集,跑几组对比看看排序准不准。

还有一个小建议:如果你的数据量不大,这种方式影响不大。但数据表一多、记录一大,性能就得考虑下了。可以用临时字段存排序键值,减少实时计算。

如果你也在用 DB2 做中文,尤其是做报表、列表展示那种对排序比较敏感的功能,挺建议你试试这种方法。效果还挺不错的,能省不少排查问题的功夫。