今天查询sqlite的时候需要不区分大小写,查了下文档,需要使用collate nocase.顺便学习下collate的用法。

collate在sql中是用来定义排序规则的。排序规则其实就是当比较两个字符串时,根据某种规则来确定哪个比较大,是否相等。各个数据库支持不同的排序规则。

sqlite有三种build in的排序规则:

BINARY二进制比较,直接使用memcmp()比较
NOCASE 将26个大写字母转换为小写字母后进行与BINARY一样的比较
RTRIM 和BINARY一样,忽略结尾的空格

 

 

 

 

Sql server则比较复杂: 根据MSDN官方解释 排序规则指定了表示每个字符的位模式。它还指定了用于排序和比较字符的规则。

排序规则具有下面的特征: 区分语言,区分大小写,区分重音,区分假名

看一下SqlServer中的截图:

 

 

collate的名字包括两部分,前部分是表示字符集,后部分定义如下:

_BIN 指定使用向后兼容的二进制排序顺序。
_BIN2 指定使用 SQL Server 2005 中引入的码位比较语义的二进制排序顺序。
_Stroke按笔划排序
_CI(CS)是否区分大小写,CI不区分,CS区分
_AI(AS) 是否区分重音,AI不区分,AS区分
_KI(KS)是否区分假名类型,KI不区分,KS区分
_WI(WS) 是否区分全半角,WI不区分,WS区分

 

 

 

 

 

 

还可以根据拼音,笔画来排序。

如何设置排序规则

可以在数据库(create database/alter database时指定),字段级别(create table/alter table时指定)使用Collate命令设置collate,字段级别优先级更高。

转载:https://www.cnblogs.com/Code-life/p/6892144.html