Java 在MySQL模式下,内存数据库中的H2按不同顺序处理
我有一个查询,它在包含电子邮件地址的VARCHAR列上按排序 如果我点击我的物理MySQL数据库,它会忽略Java 在MySQL模式下,内存数据库中的H2按不同顺序处理,java,mysql,sql-order-by,collation,h2,Java,Mysql,Sql Order By,Collation,H2,我有一个查询,它在包含电子邮件地址的VARCHAR列上按排序 如果我点击我的物理MySQL数据库,它会忽略ORDER BY中的大小写。然而,我的内存数据库中的h2是关于大小写的。它被设置为MySQL模式 有人知道这是为什么吗?在数据库中计算字符串时,区分大小写是由排序规则决定的 检查H2上的排序规则处理:作为使用排序规则的替代方法,您可以使用禁用区分大小写。这需要在创建表之前完成 H2的MySQL模式不区分大小写的原因是:H2中的兼容模式不会影响事物的持久化方式(否则以后无法以不同的兼容模式访问
ORDER BY
中的大小写。然而,我的内存数据库中的h2是关于大小写的。它被设置为MySQL模式
有人知道这是为什么吗?在数据库中计算字符串时,区分大小写是由排序规则决定的
检查H2上的排序规则处理:作为使用排序规则的替代方法,您可以使用禁用区分大小写。这需要在创建表之前完成
H2的MySQL模式不区分大小写的原因是:H2中的兼容模式不会影响事物的持久化方式(否则以后无法以不同的兼容模式访问数据库,或者禁用兼容模式)。区分大小写确实会影响事物的存储方式(特别是索引)。使用
VARCHAR\u IGNORECASE
而不是VARCHAR
谢谢你,天哪。我不明白,他们是说H2支持在表或列上设置排序规则,还是说在jdbc连接上设置排序规则?似乎H2不尊重我的列(latin1)的排序规则,而是使用utf8。