SQLite与H2数据库ORDER BY排序:特殊字符与数字差异及示例排序问询
SQLite 与 H2 数据库 ORDER BY 子句的特殊字符/数字排序规则差异
核心排序规则差异
SQLite
- 默认采用BINARY排序规则,完全基于字符的ASCII/UTF-8字节值进行比较。
- 排序优先级只看字符编码值,不考虑字符类别或语言规则。数字字符('0'-'9',ASCII 48-57)的编码值低于多数常见特殊字符(比如@的ASCII为64)。
H2 数据库
- 默认排序规则依赖于数据库的字符集和配置(通常为
UNICODE或对应语言的排序规则,比如ENGLISH)。 - 按照Unicode字符类别排序,多数标点符号(包括@)会被排在数字字符之前,而非单纯依赖编码值。
值 1、5、@ 的排序结果
SQLite(默认BINARY排序)
升序排列:1 → 5 → @
原因:ASCII值对比:
'1'=49<'5'=53<'@'=64
H2(默认排序)
升序排列:@ → 1 → 5
原因:默认规则将标点类字符的排序优先级置于数字类字符之前
内容的提问来源于stack exchange,提问作者tietze111
相关产品推荐
相关产品推荐

