根据sqlite3 文档,
每个列名后面的 COLLATE 子句定义了用于该列中文本条目的整理顺序。默认整理顺序是在 CREATE TABLE 语句中为该列定义的整理顺序。或者,如果没有以其他方式定义整理顺序,则使用内置的 BINARY 整理顺序。
整理序列有什么作用,什么是 BINARY 整理序列?
根据sqlite3 文档,
每个列名后面的 COLLATE 子句定义了用于该列中文本条目的整理顺序。默认整理顺序是在 CREATE TABLE 语句中为该列定义的整理顺序。或者,如果没有以其他方式定义整理顺序,则使用内置的 BINARY 整理顺序。
整理序列有什么作用,什么是 BINARY 整理序列?
这是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