SAP HANA数据库里对中文字符串排序的实现

下图是SAP Cloud for Customer对中文字符的排序结果:

SAP HANA数据库里对中文字符串排序的实现

在HANA studio上打开trace:

SAP HANA数据库里对中文字符串排序的实现

设置trace file name:

SAP HANA数据库里对中文字符串排序的实现

构造测试数据:


DROP TABLE TEST_SORT;
CREATE TABLE TEST_SORT ( SID INTEGER,
CNAME NVARCHAR(100),
ENAME NVARCHAR(20));

INSERT INTO TEST_SORT Values (1, '山东', 'ShanDong');
INSERT INTO TEST_SORT Values (2, '华为', 'Huawei');
INSERT INTO TEST_SORT Values (3, '爱活力', 'Aihuoli');

执行select:
select * from TEST_SORT ORDER BY CNAME desc;
找到trace file:

SAP HANA数据库里对中文字符串排序的实现

从trace file发现HANA是按照中文字符的Hexadecimal排序:

SAP HANA数据库里对中文字符串排序的实现

所以才会有如下结果:

ResultSet.columnLabel = [SID:INTEGER, CNAME:NVARCHAR, ENAME:NVARCHAR] (thread 29569, con-id 300136) at 2017-09-11 15:54:31.140189
ResultSet.row[1] = [3, u'''\xE7\x88\xB1\xE6\xB4\xBB\xE5\x8A\x9B''', u'''Aihuoli'''] (thread 29569, con-id 300136) at 2017-09-11 15:54:31.140204
ResultSet.row[2] = [1, u'''\xE5\xB1\xB1\xE4\xB8\x9C''', u'''ShanDong'''] (thread 29569, con-id 300136) at 2017-09-11 15:54:31.140210
ResultSet.row[3] = [2, u'''\xE5\x8D\x8E\xE4\xB8\xBA''', u'''Huawei'''] (thread 29569, con-id 300136) at 2017-09-11 15:54:31.140216

爱活力 will be bigger than 山东 and 华为.

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
SAP HANA数据库里对中文字符串排序的实现