13

根据sqlite3 文档

每个列名后面的 COLLATE 子句定义了用于该列中文本条目的整理顺序。默认整理顺序是在 CREATE TABLE 语句中为该列定义的整理顺序。或者,如果没有以其他方式定义整理顺序,则使用内置的 BINARY 整理顺序。

整理序列有什么作用,什么是 BINARY 整理序列?

4

2 回答 2

6

这是sql引擎在内部对数据进行排序的方式。Binary Collat​​ion 按照它的建议进行,它进行二进制比较。通常它是最快的排序规则,尽管我从未量化它,因为它检查位模式,这意味着它区分大小写和重音。

于 2009-04-28T21:20:52.010 回答
4

二进制排序规则逐字节比较您的字符串,就像在 unicode 表中一样。例如:A、B、a、b。不区分大小写 (NOCASE) 的顺序是:a,A,b,B。

二进制排序的优点是它的速度,因为字符串比较非常简单/快速。在一般情况下,二进制索引可能不会产生预期的排序结果;但是,对于完全匹配,它们可能很有用。

COLLATE NOCASE 也会影响区分大小写的查询。

如果您有一列包含这些值:'aa'、'aA'

select * from table where col = 'aa'

如果您使用 COLLATE NOCASE 创建了列,它将返回“aa”和“aA”。否则,如果你没有指定它,它只会返回'aa'。

您也可以在查询中指定它(如果您使用 COLLATE NOCASE 创建列,这会更慢)

select * from table where col = 'aa' COLLATE NOCASE
于 2015-08-06T15:26:39.197 回答