问题:在MySQL,PHP中排序时,或者在Linux和Windows操作系统上排序时,在哪里可以找到字符的优先级?
例如,每个人都知道在MySQL中对字符串执行升序排序时a在b之前。 但是其他角色呢? 美元符号 $ 是否在星号 * 之前? 感叹号之前是否有空格? 等。。。
排序顺序由什么决定?它是否使用基础 ascii/UTF-8 值? 不同的技术有什么不同吗?
要考虑的技术:
- 数据库 - MySQL/SQL/SQLite/Oracle/etc
- 编程语言(用于字符串排序函数) - PHP/Javascript/ASP.NET/Visual C#/Python/Ruby/Objective C
- 操作系统(即按文件名对文件进行排序) - Windows/Linux/MacOS/iOS/Android
- 数据库 - 排序规则,如果未设置排序规则整数字符值
- 编程语言 - 区域设置或整数字符值或用户定义的函数(通常默认情况下所有 3 个选项都可用)
- 操作系统 - 区域设置
字符表示为从无符号整数类型到特定字形的映射。特定映射由字符集定义。
因此,当您比较字符时,您实际上是在比较表示特定字符集中的字符的整数。
例如,Java根据Unicode表示来比较String
。源
在数据库术语中,这称为归类序列,大多数字符集都有默认值。 如果你使用的是 unicode,你可以看看这里:http://www.unicode.org/reports/tr10/tr10-24.html
在考虑其他语言时,它会变得更加有趣。
Ä 和 ö 是带有重音符号的荷兰语和德语字母,但在瑞典语字母表中是"真实"字母(在 Z 之后,而不是分别在 A 和 B/O 和 L 之间)。