SQLite区分大小写查询
http://www.cnblogs.com/zhuawang/archive/2013/01/15/2861566.html
大部分数据库在进行字符串比较的时候,对大小写是不敏感的。
但是,在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区分大小写查询的更多相关文章
- IOS开发数据库篇—SQLite模糊查询
IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: // // YYPerson.h // 03- ...
- sqlServer区分大小写查询
sql server默认不区分大小写查询,但是有的时候部分查询语句却需要区分大小写查询,这个时候就需要进行一些特殊处理.区分大小写主要分两种方法. 转二进制判断 select * from table ...
- SQLite -插入查询
SQLite -插入查询 SQLite插入语句是用来添加新行数据到数据库中的一个表. 语法: 有两种基本的插入语句的语法如下: INSERT INTO TABLE_NAME (column1, co ...
- SQLite - SELECT查询
SQLite - SELECT查询 SQLite SELECT语句用于获取数据从一个SQLite数据库表返回数据结果表的形式.也称为result-sets这些结果表. 语法 SQLite SELECT ...
- sql 区分大小写查询
sql 区分大小写查询 select * FROM [Users] where userName collate Chinese_PRC_CS_AS='ADMIN'
- SQLite 参数化查询
SQLite参数化查询 首先给出两个参考博客: Sqlite DB sqlite3使用简介 贴出一段自己用的代码: #include <stdio.h> #include <stdl ...
- sqlite常用查询
做的小工具用到了sqlite,在查询上较sqlserver还是稍有差异,将常用操作汇总一下,慢慢收集和整理. --查询版本SELECT sqlite_version() AS 'SQLite Vers ...
- Android SQLite 通配符查询找不到参数问题
使用Android SQLite中SQLiteDatabase类的query方法查询时,如果where中包含通配符,则参数会无法设置,如类似下面的方法查询时 SQLiteDatabase db = d ...
- sql语句:查询、排序、不区分大小写查询,及联合使用
1.不排序时的查找语句: offset message 为表名,talker 为列名. 此语句的意思是:从message 表中查找 talker 等于wxid_0930479303212的数据,从第 ...
随机推荐
- 【CI】CN.一种多尺度协同变异的微粒群优化算法
[论文标题]一种多尺度协同变异的微粒群优化算法 (2010) [论文作者]陶新民,刘福荣, 刘 玉 , 童智靖 [论文链接]Paper(14-pages // Single column) [摘要] ...
- permission denied (publickey)问题的解决 和 向github添加ssh key
使用ssh key这种方式进行clone ,pull github上面的项目,使用 git clone或者git pull origin master出现permission denied (publ ...
- FormsAuthentication.SetAuthCookie
这两天在研究 Forms 进行用户验证, 它本身没有什么上msdn上查一下就知道怎么个搞法了! 不过我在测试的时候发现也会产生 了一些疑问! 1. 什么我在web.config 的 authentic ...
- spring-data-redis读写分离
在对Redis进行性能优化时,一直想对Redis进行读写分离.但由于项目底层采用spring-data-redis对redis进行操作,参考spring官网却发现spring-data-redis目前 ...
- Spring MVC @PathVariable被截断
一.问题描述 一个控制器提供RESTful访问信息: @RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + &qu ...
- 【转】Tesla Model S的设计失误
Tesla Model S的设计失误 这幅美丽的图片,就是红极一时的Tesla电动车Model S的内景.然而你有没有发现,其中有一些不大对劲的地方?虽然我看好电动汽车,它们环保,安静,运动敏捷,然而 ...
- java时区转化相关工具方法
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java. ...
- Keras 2.0版本运行
Keras 2.0版本运行demo出错: d:\program\python3\lib\site-packages\ipykernel_launcher.py:8: UserWarning: Upda ...
- centos 6.3 64位下cpuminer +mining_proxy 挖掘莱特币(LTC)教程
1.下载软件: cpuminer: http://sourceforge.net/projects/cpuminer/files/ 找到对应的版本,我的服务器是centos64的,找了个当前最高版本: ...
- centos 7 下图形验证码乱码
工作中遇到一个问题:同样的代码在centos 6.5下图形验证码是正常的 但是在centos 7下面是乱码 centos 6.5 的系统字体库目录 [wwwad@P2P-test2 fonts]$ p ...