【问题标题】:What is the precedence of characters when sorting in MySQL, PHP, or just in general?在 MySQL、PHP 或一般情况下排序时,字符的优先级是什么?
【发布时间】:2012-06-12 00:42:54
【问题描述】:

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

比如,大​​家都知道a在表演的时候在b之前在 MySQL 中对字符串进行升序排序。但是其他角色呢?美元符号 $ 是否出现在星号 * 之前?感叹号前面有空格吗?等等……

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

需要考虑的技术:

  1. 数据库 - MySQL / SQL / SQLite / Oracle / 等
  2. 编程语言(用于字符串排序功能) - PHP / Javascript / ASP.NET / Visual C# / Python / Ruby / Objective C
  3. 操作系统(即按文件名排序文件)- Windows / Linux / MacOS / iOS / Android

【问题讨论】:

  • 在 dbms 中称为“排序规则”
  • 这取决于编码。不是字母或数字的字符通常按其数值排序,数值通常由 ASCII 标准、Unicode 标准或 ISO-8859-1 标准定义。

标签: php javascript mysql windows linux


【解决方案1】:
  1. 数据库 - 排序规则,如果没有设置排序规则,则整数字符值
  2. 编程语言 - 区域设置或整数字符值或用户定义的函数(通常默认情况下所有 3 个选项都可用)
  3. 操作系统 - 区域设置

【讨论】:

    【解决方案2】:

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

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

    例如Java 根据它们的 unicode 表示比较 Strings。 Source

    【讨论】:

      【解决方案3】:

      在数据库术语中,这称为排序规则,大多数字符集都有一个默认值。如果您使用的是 unicode,您可能会看这里:http://www.unicode.org/reports/tr10/tr10-24.html

      【讨论】:

        【解决方案4】:

        考虑其他语言时会变得更有趣。

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

        【讨论】:

          猜你喜欢
          • 2010-10-29
          • 1970-01-01
          • 1970-01-01
          • 2014-09-07
          • 1970-01-01
          • 2022-11-16
          • 2013-07-09
          • 2011-10-09
          • 2012-06-07
          相关资源
          最近更新 更多