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的数据,从第 ...
随机推荐
- Redis学习之路(004)- 报错及问题
在i配置编译的过程中,遇到一下问题: 1. /redis_test: error while loading shared libraries: libhiredis.so.0.13: cannot ...
- 【Android】如何获取本机号码、IMSI、EMSI
获取本机号码: 获取本机号码,需要在配置文件中加入权限: <uses-permission android:name="android.permission.READ_PHONE_ST ...
- Docker容器相互访问
原文地址:https://blog.csdn.net/subfate/article/details/81396532?utm_source=copy 很多时候,同一台机器上,需要运行多个docker ...
- OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法
函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界. cv2.boundingRect(arr ...
- OpenCV 学习笔记 02 处理文件、摄像头和图形用户界面
在处理文件前需要引入OpenCV库,同时也引入unmpy库 import cv2 import numpy as np 1 基本的读写操作 1.1 图像文件的读写操作 1.1.1 图像文件的读取操作 ...
- Tensorflow中的run()函数
1 run()函数存在的意义 run()函数可以让代码变得更加简洁,在搭建神经网络(一)中,经历了数据集准备.前向传播过程设计.损失函数及反向传播过程设计等三个过程,形成计算网络,再通过会话tf.Se ...
- easyui textbox combobox 设置只读不可编辑状态
输入框 textbox $("#xx").textbox('setValue','value'); //设置输入框的值 $('#xx').textbox('textbox').a ...
- linux arm的高端内存映射
linux arm的高端内存映射(1) vmalloc 高端内存映射 与高端映射对立的是低端映射或所谓直接映射,内核中有关变量定义它们的它们的分界点,全局变量high_memory,该变量定义在m ...
- js 获取元素所有兄弟节点实例
比如一个ul里面有10个li,而第3个li上有特殊的样式(比如颜色为红色,其他为黑色).我想把其他所有li——不包括红的li——的颜色也设为红色,此时,就需要获得红li的所有兄弟节点. 兄弟,就是和你 ...
- Eclipse自己定义keystore
首先新建一个自己的***.keystore.(假设没有,新建过程中參考下面设置) 改动keystorepassword的命令(keytool为JDK自带的命令工具,my.keystore为自己的文件名 ...