H2在内存DB中,在MySQL模式下以不同方式处理ORDER BY

时间:2011-07-01 19:33:09

标签: java mysql sql-order-by collation h2

我有一个查询在包含电子邮件地址的VARCHAR列上执行ORDER BY

如果我点击我的物理MySQL数据库,它会忽略ORDER BY中的大小写。但是,我的h2内存数据库是尊重案例。它设置为MySQL模式。

任何人都知道这是为什么?

3 个答案:

答案 0 :(得分:5)

在评估数据库中的字符串时的区分大小写由排序规则确定。

检查H2上的整理处理:http://www.h2database.com/html/grammar.html#set_collation

答案 1 :(得分:2)

作为使用归类的替代方法,您可以使用SET IGNORECASE TRUE禁用区分大小写。这需要在创建表之前完成。

H2 的MySQL模式不不区分大小写的原因是:H2中的兼容模式不会影响事物的持久性(否则您无法以不同的兼容性访问数据库)稍后启用模式,或禁用兼容模式)。区分大小写会影响事物的存储方式(特别是索引)。

答案 2 :(得分:0)

使用VARCHAR_IGNORECASE代替VARCHAR

Reference