首页 > 数据库 >SQLite默认区分大小写,如何设置不区分大小写(22)

SQLite默认区分大小写,如何设置不区分大小写(22)

时间:2024-03-18 11:11:06浏览次数:16  
标签:SQLite name 区分 LOWER 大小写 test where select

在SQLite中,对大小写是敏感的,默认区分大小写

https://www.cnblogs.com/chenlong-50954265/p/4980985.html

假设表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,name,区分,LOWER,大小写,test,where,select
From: https://www.cnblogs.com/tulater/p/18079934

相关文章

  • SQLiteC/C++接口详细介绍-sqlite3类(一)
    快速跳转文章列表:SQLite—系列文章目录  上一篇:SQLiteC/C++接口简介 下一篇:SQLiteC/C++接口详细介绍(二) 引言:SQLiteC/C++数据库接口是一个流行的SQLite库使用形式,它允许开发者在C和C++代码中嵌入SQLite基本功能的解决方案。通过SQLiteC/C++数据库接口,开发者可以......
  • shell脚本实现子母大小写转换
    文章目录把变量中的第一个字符换成大写把变量中的所有小写字母,全部替换为大写把变量中的第一个字符换成小写把变量中的所有大写字母,全部替换为小写用tr需要新增变量,用declare或typeset需要在变量赋值前或者赋值后单独声明,都有些麻烦此方法为bash4.0以后新增,bash4......
  • 【鸿蒙ArkTs】沙箱内sqlite数据库db文件导入导出
    1.数据库在沙箱内位置沙箱文件目录官方文档说明获取数据库路径:let数据库路径='/data/storage/el2/database/entry/rdb/Mydata.db'2.数据库临时文件找到了数据库db文件,只导出这个db文件是没有用的。因为还有db-wal这个临时文件。系统并没有把数据全部写入db,甚至重启手机......
  • 有关幅值、振幅、峰值、峰峰值、有效值、平均值的区分
    本文以Ut=10sin(wt)的正弦电压为例:幅值:10V振幅:10V峰值(Vp:Peak):10V峰峰值(Vpp:Peaktopeak):20V有效值(Vrms):10/2^(1/2)-->峰值除以根号二平均值(Vavg):这边提以下半波整流与全波整流下平均值与峰值的关系半波整流:Vavg=0.45Vp全波整流:Vavg=0.9Vp注意:......
  • 3.1_4 动态分区分配算法
    3.1_4动态分区分配算法  动态分区分配算法:在动态分区分配方式中,当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?(一)首次适应算法算法思想  每次都从低地址开始查找,找到第一个能满足大小的空闲分区。如何实现  空闲分区以地址递增的次序排列。每次分配......
  • 嵌入式数据库SQlite3-进阶篇
    嵌入式数据库sqlite3-HQ文章目录嵌入式数据库sqlite3-HQ@[toc]嵌入式数据库sqlite3【进阶篇】数据库准备order子句Where子句与逻辑运算符语法实例groupby子句having子句举例函数SQLiteCOUNT函数SQLiteMAX函数SQLiteMIN函数SQLiteAVG函数SQLiteSUM函......
  • Sqlite3之左子串,右子串,中间串subStr函数(14)
    右子串  subStr('一二三四五',-4)selectsubStr('一二三四五',-4) 左子串  substr('一二三四五',1,3) 中串,比如取出三四  selectsubStr('一二三四五',3,2) ......
  • sqlite 可视化工具SQLite studio
    特点:1.轻量级2.独立性,没有依赖,无需安装3.隔离性全部在一个文件夹系统4.跨平台支持众多操作系统5.多语言接口支持众多编程语言6.安全性事物,通过独占性和共享锁来实现独立事务的处理,多个进程可以在同一个时间内从同一个数据库读取数据,但只有一个可以写入数据所支持的数据类型:......
  • sqlite.dll介绍,sqlite.dll文件缺失的解决方法,3分钟快速修复sqlite.dll
    第一次见到这个dll,一般是找到这个dll,重新引用下。网上找到了关于这个dll的详细解释,其他dll应该也可以用这些方法修复,在此记录下。原文链接:https://zhuanlan.zhihu.com/p/668219472一.什么是SQLite.dllSQLite.dll是SQLite数据库引擎的一个关键组成部分。(SQLite是一个开源的嵌......
  • SQLServer-查询区分字母大小写
    1、sqlserver默认不区分大小写: 2、可以手动区分大小写:ANDtcn.centerpress_number='2h(aa01/aa02)'--不区分大小写查询ANDtcn.centerpress_numberCOLLATEChinese_PRC_CS_AI_WS='2h(aa01/aa02)'--区分大小写,第一种写法,放在查询条件前边ANDtcn.centerpress_numberCOL......