--转自mojianpo  http://mojianpo.iteye.com/blog/1496579

大部分数据库在进行字符串比较的时候,对大小写是不敏感的。 
但是,在SQLite中,对大小写是敏感的。

假设表Test的结构和值如下:

_id  name
1 ABCDE
2 abcde
3 ABCde
4 abCDE
5 aaaaa
6 bbbbb

执行下面的SQL语句:

select * from test where name = 'Abcde';

结果是没有查询到任何记录。

明显地,SQLite在进行字符串比较的时候,默认对大小写是敏感的

那么SQLite怎么区分大小写查询呢,以下是三种解决方案:

方案一:使用大小写转换函数LOWER、UPPER

1.select * from test where LOWER(name) = 'abcde';

2.select * from test where LOWER(name) = LOWER('ABCDE');

3.select * from test where LOWER(name) = LOWER('Abcde');

4.select * from test where LOWER(name) = LOWER('ABCde');

....

(1).select * from test where UPPER(name) = 'ABCDE';

(2).select * from test where UPPER(name) = UPPER('ABCDE');

(3).select * from test where UPPER(name) = UPPER('Abcde');

(4).select * from test where UPPER(name) = UPPER('ABCde');

.....

查询到的记录都如下:

1 ABCDE
2 abcde
3 ABCde
4 abCDE

方案二:在进行比较时强制声明不区分大小写

select * from test where name = 'ABCDE' COLLATE NOCASE;

查询到的记录如下:

1 ABCDE
2 abcde
3 ABCde
4 abCDE

方案三:创建表时声明该字段不区分大小写

create table test (_id Integer,name Text COLLATE NOCASE );

如果在任何情况下都不需要对大小写敏感,方案三是最好的解决方案;

如果只是少量查询对大小写不敏感,可以用方案二。

而方案一由于用到了函数,可能有额外的性能消耗,不推荐使用

SQLite 大小写敏感的更多相关文章

  1. Android免坑指南(一)Sugar与SQLite

    最近在Android手机开发中使用了ORM框架Sugar1.4,节省了大量代码,同时也遇到不少麻烦,记录如下: 1. 使用group by将查询结果转换为POJO对象 在Sugar1.4中,可以使用如 ...

  2. sqlite查询问题,由字母大小写敏感引起

    目前做的项目之前是用mysql,这是个错误的选择,因为本身并不是服务器-客户端模式的项目,而是一个CS架构项目,mysql这种需要较繁复配置的数据库并不合适.需要的应该是sqlite这类,内嵌的数据库 ...

  3. [PHP] Laravel 体现 MySQL、Sqlite 数据的大小写敏感

    要想实现数据比对的大小写敏感,方式是设置数据库字段类型 或者 字段校验字符集. MySQL 和 Sqlite 所支持的 collations 形式是不同的,你可以通过以下文档了解到. MySQL co ...

  4. SQLite的基本使用

    SQLite 创建表 SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表.创建基本表,涉及到命名表.定义列及每一列的数据类型. 语法 CREATE TABLE 语句的基 ...

  5. SQL for SQLite

    语法 verb + subject + predicate commannds(命令) SQL由命令组成,以分号为结束.命令有token组成,token由white space分隔,包括空格.tab. ...

  6. 学习SQLite之路(二)

    下面就是真正关于数据库的一些知识了: 20160614更新 参考: http://www.runoob.com/sqlite/sqlite-tutorial.html 1. SQLite创建表: 基本 ...

  7. SQLite常用点滴总结(转)

    expressionexpr ::=     expr binary-op expr |expr [NOT] like-op expr [ESCAPE expr] |unary-op expr |( ...

  8. Android SQLite (四 ) 全面详解(二)

    SQLite创建数据库 创建数据库语法: sqlite3 DatabaseName.db 如下展示一个实例: SQLite附加数据库 假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中的任何 ...

  9. Android SQLite (三 ) 全面详解(一)

    官网 SQLite是一款轻型的数据库,是关系型数据库(RDBMS)管理系统,它包含在一个相对小的C库中.目前在很多嵌入式产品中使用了它,它占用资源非常 的低,在嵌入式设备中,可能只需要几百K的内存就够 ...

随机推荐

  1. 《C#多线程编程实战》2.3 Mutex

    这个真的是大坑. 如果深入研究,像是同步域,上下文这类都会出现. 但是书上有没有讲. 完全不知道什么意思. 勉勉强强讲这个Mutex的用法搞明白了. 这个是原书代码: class Program { ...

  2. 后置处理器----JSON提取器

    JSON提取器可以很方便的让你从JSON响应格式中提取数据. 1)Name:JSON提取器的名称. 2)Apply to:应用范围,有些采样器还嵌套子采样器,可以在此处设置JSON提取器是作用与主采样 ...

  3. C# 小球100米自由落下

    //一球从N 米高自由落下,每次落地后反跳回原高度的一般:再录下,求它在第十次落地时,共经过多少米?第10次反弹多高 static string ballDsitance(float height1, ...

  4. PHP项目目录结构

    PHP项目目录结构 原创 2017年11月23日 16:02:18 标签: php / 结构 1226 一个完整的项目需要有三大部分构成,项目框架,业务实现,公共支持.为了便于开发维护,通常使三部分分 ...

  5. CF1137F Matches Are Not a Child's Play(树链剖分)

    题面 我们定义一棵树的删除序列为:每一次将树中编号最小的叶子删掉,将该节点编号加入到当前序列的最末端,最后只剩下一个节点时将该节点的编号加入到结尾. 例如对于上图中的树,它的删除序列为:2 4 3 1 ...

  6. 八大排序算法的python实现(一)直接插入排序

    刚参考网上的以及书上的资料把这八大算法又复习了一遍,感悟就是:有些算法原理真的很简单,一看就懂,但实现起来总是有这样那样的问题. 闲言少叙,先贴代码,之后再以自己的理解,以及自己在理解与实现的过程中遇 ...

  7. postgreSQL PL/SQL编程学习笔记(一)

    1.Structure of PL/pgSQL The structure of PL/pgSQL is like below: [ <<label>> ] [ DECLARE ...

  8. python wraps装饰器

    这是一个很有用的装饰器.看过前一篇反射的朋友应该知道,函数是有几个特殊属性比如函数名,在被装饰后,上例中的函数名foo会变成包装函数的名字 wrapper,如果你希望使用反射,可能会导致意外的结果.这 ...

  9. Cheerleaders UVA - 11806 计数问题

    In most professional sporting events, cheerleaders play a major role in entertaining the spectators. ...

  10. php opcache 详解

    PHP性能提升之OPcache相关参数详解 工具 memory 发布于December 15, 2016 标签: PHP OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PH ...