在MySQL,PHP或一般情况下排序时字符的优先级是什么


What is the precedence of characters when sorting in MySQL, PHP, or just in general?

问题:在MySQL,PHP中排序时,或者在Linux和Windows操作系统上排序时,在哪里可以找到字符的优先级?

例如,每个人都知道MySQL中对字符串执行升序排序时a在b之前。 但是其他角色呢? 美元符号 $ 是否在星号 * 之前? 感叹号之前是否有空格? 等。。。

排序顺序由什么决定?它是否使用基础 ascii/UTF-8 值? 不同的技术有什么不同吗?

要考虑的技术:

  1. 数据库 - MySQL/SQL/SQLite/Oracle/etc
  2. 编程语言(用于字符串排序函数) - PHP/Javascript/ASP.NET/Visual C#/Python/Ruby/Objective C
  3. 操作系统(即按文件名对文件进行排序) - Windows/Linux/MacOS/iOS/Android
  1. 数据库 - 排序规则,如果未设置排序规则整数字符值
  2. 编程语言 - 区域设置或整数字符值或用户定义的函数(通常默认情况下所有 3 个选项都可用)
  3. 操作系统 - 区域设置

字符表示为从无符号整数类型到特定字形的映射。特定映射由字符集定义。

因此,当您比较字符

时,您实际上是在比较表示特定字符集中的字符的整数。

例如,Java根据Unicode表示来比较String。源

在数据库术语中,这称为归类序列,大多数字符集都有默认值。 如果你使用的是 unicode,你可以看看这里:http://www.unicode.org/reports/tr10/tr10-24.html

在考虑其他语言时,它会变得更加有趣。

Ä 和 ö 是带有重音符号的荷兰语和德语字母,但在瑞典语字母表中是"真实"字母(在 Z 之后,而不是分别在 A 和 B/O 和 L 之间)。