校对是什么意思?

排序规则在 SQL 中意味着什么,它的作用是什么?

126638 次浏览

排序规则可以简单地看作是排序顺序。

在英语中(这是一个奇怪的表亲,美国人) ,排序可能是一个非常简单的事情,包括按 ASCII 代码排序。

一旦你开始学习那些带有所有口音和其他特征的奇怪的欧洲语言,排序就会发生变化。例如,尽管 a的不同重音形式可能存在于不同的代码点,但是它们可能都需要排序,就好像它们是同一个字母一样。

Http://en.wikipedia.org/wiki/collation

排序规则是将书面信息组合成标准顺序。(...)像 Unicode 排序规则算法这样的排序算法通过比较两个给定的字符串并决定哪个应该排在另一个之前的过程来定义顺序。

排序规则是 SQL 服务器决定如何对文本进行排序和比较的方式。

参见 MSDN

排序规则确定数据的排序和比较方式。对于国际化来说,这是非常重要的,例如,如何对日本汉字进行排序?

如果你谷歌排序和 sql 服务器,你会发现大量的文章讨论它!

说明如何比较和排序字符串的规则: 字母顺序; 大小写是否重要,变音符是否重要等等。

例如,如果希望所有字母都是不同的(例如,如果在 UNIX中存储文件名) ,则使用 UTF8_BIN排序规则:

SELECT  'A' COLLATE UTF8_BIN = 'a' COLLATE UTF8_BIN


---
0

如果您想忽略大小写和变音符的差异(例如,对于搜索引擎) ,可以使用 UTF8_GENERAL_CI排序规则:

SELECT  'A' COLLATE UTF8_GENERAL_CI = 'ä' COLLATE UTF8_GENERAL_CI


---
1

正如您所看到的,这个排序规则(比较规则)将大写字母 A和小写字母 ä视为同一个字母,忽略大小写和变音符的差异。

排序规则定义了如何对字符串值进行排序和比较

例如,它定义了如何处理

  • 口音(äàa等)
  • 案件(Aa)
  • 语言上下文:
    • 在法文排序法中,cote < côte < coté < côté.
    • 在 SQLServerLatin1默认值中,cote < coté < côte < côté
  • ASCII 排序(二进制排序)

除了在一些西欧语言中“重音字母和非重音字母的排序不同”之外,你还必须考虑字母的 团体,有时候它们的排序也不同。

传统上,在西班牙语中,“ ch”本身被认为是一个字母,与“ ll”(两者都代表一个音素)相同,因此列表会像下面这样排序:

  • 你好
  • Cinco
  • Charco
  • 巧克力
  • Chueco
  • 达多
  • (...)
  • (咒语)
  • (西班牙语)
  • 亚特兰大
  • 卢维亚
  • Madera

注意所有以单个 C开头的单词放在一起,除了以 开头的单词放在 之后之外,以 开头的单词放在所有以单个 开头的单词之后也是一样的。这就是你在旧字典和百科全书中看到的顺序,有时甚至在今天由非常保守的组织。

英国皇家语言学院(Royal Academy of The Language)改变了这一点,使西班牙语更容易适应计算机世界。尽管如此,(西班牙语)仍然被认为是一个不同于 N和去 之后它,在 之前。这是一个正确排序的列表:

  • 纳米比亚
  • 号码
  • 南度
  • 宝贝
  • Obra
  • 眼睛

通过选择正确的排序规则,您可以自动完成以下所有工作: -)

排序是指为字母表中的字符分配某种顺序,比如 ASCII 或 Unicode 等。

假设字母表中有3个字符-{ A,B,C }。可以通过为字符分配整数值来为其定义一些示例排序规则

  1. 例1 = { A = 1,B = 2,C = 3}
  2. 例2 = { C = 1,B = 2,A = 3}
  3. 例3 = { B = 1,C = 2,A = 3}

事实上,您可以定义 n!给定这样的排序顺序,不同的排序例程,比如 LSD/MSD 字符串排序,会利用它对字符串进行排序。

参见本条: 排序规则是用于比较字符集中字符的一组规则。它还规定了字符的排序和两个字符的正确顺序因语言而异。 排序规则比较两个字符串,如果一个单词大于另一个单词,则进行相应的排序。

如果使用“ latin1”字符集,则可以使用“ latin1 _ swdish _ ci”排序规则。

必须选择正确的排序规则,因为错误的排序规则可能会影响数据库性能。