什么是创建一个SQLite指数当COLLATE关键字吗?
题
按照 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
不隶属于 StackOverflow