我有一个查询在包含电子邮件地址的VARCHAR列上执行ORDER BY
。
如果我点击我的物理MySQL数据库,它会忽略ORDER BY
中的大小写。但是,我的h2内存数据库是尊重案例。它设置为MySQL模式。
任何人都知道这是为什么?
答案 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
。