【发布时间】:2010-10-22 10:33:12
【问题描述】:
每个后面的 COLLATE 子句 列名定义了一个排序规则 用于文本条目的序列 柱子。默认整理顺序 是为定义的整理顺序 CREATE TABLE 中的该列 陈述。或者如果没有整理顺序 另有定义,内置 使用 BINARY 整理顺序。
整理序列有什么作用,什么是 BINARY 整理序列?
【问题讨论】:
标签: sql sqlite indexing collate
每个后面的 COLLATE 子句 列名定义了一个排序规则 用于文本条目的序列 柱子。默认整理顺序 是为定义的整理顺序 CREATE TABLE 中的该列 陈述。或者如果没有整理顺序 另有定义,内置 使用 BINARY 整理顺序。
整理序列有什么作用,什么是 BINARY 整理序列?
【问题讨论】:
标签: sql sqlite indexing collate
这是sql引擎内部排序数据的方式。 Binary Collation 按照它的建议进行,它进行二进制比较。通常它是最快的排序规则,虽然我从未量化它,因为它检查位模式,这意味着它区分大小写和重音。
【讨论】:
二进制排序规则逐字节比较您的字符串,就像在 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
【讨论】: