按照 sqlite3的文档

  

在COLLATE子句以下各   列名称定义了一个核对   用于文本输入序列   柱。默认排序序列   用于定义排序序列   在CREATE TABLE该列   声明。或者,如果没有整理顺序   另有定义,内置   BINARY整理顺序被使用。

什么是一个整理顺序做的,什么是二进制整理顺序?

有帮助吗?

解决方案

有方式的SQL发动机订单数据在内部。二进制排序做的事情表明,它确实二进制比较。通常其最快的整理虽然我从未量化它,因为它会检查位模式,这意味着它是大小写和重音不敏感的。

其他提示

二进制核对由字节你的字符串字节进行比较,如在表的unicode。例如:A,B,A,B。 甲大小写敏感顺序是: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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top