字符串比较时如何将Sqlite3设置为不区分大小写?

数量

我想通过字符串匹配从sqlite3数据库中选择记录。但是,如果我在where子句中使用'=',我发现sqlite3区分大小写。谁能告诉我如何使用不区分大小写的字符串比较?

cheduardo

您可以COLLATE NOCASESELECT查询中使用

SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE

另外,在SQLite中,您可以通过collate nocase在列定义中指定(其他选项为binary(默认)和rtrim;参见此处来指示创建表时该列不区分大小写您还可以指定collate nocase何时创建索引。例如:

创建表Test 
  Text_Value文本整理nocase 
);

插入测试值(“ A”);
插入测试值(“ b”);
插入测试值(“ C”);
  在测试上

创建索引Test_Text_Value_Index (Text_Value整理无大小写);

Test.Text_Value现在,涉及的表达式应该不区分大小写。例如:

sqlite>从Test中选择Text_Value,其中Text_Value ='B'; 
Text_Value       
---------------- 
b                

sqlite>从Test order中按Text_Value选择Text_Value;
Text_Value       
---------------- 
A                
b                
C     

sqlite>通过Text_Value desc从测试顺序中选择Text_Value;
TEXT_VALUE       
---------------- 
Ç                
b               

优化程序还可以潜在地利用索引来区分大小写,并在列上进行匹配。您可以使用explainSQL命令进行检查,例如:

sqlite>解释一下,从Test中选择Text_Value,其中Text_Value ='b'; 
addr操作码p1 p2 p3                                
---------------- -------------- ---------- ----- ----- --------------------------------- 
0转到0 16                                            
1整数0 0                                             
2 OpenRead 1 3 keyinfo(1,NOCASE)                 
3 SetNumColumns 1 2                                             
4 String8 0 0 b                                 
5 IsNull -1 14                                           
6 MakeRecord 1 0 a                                 
7 MemStore 0 0                                             
8 MoveGe 1 14                                            
9 MemLoad 0 0                                             
10 IdxGE 1 14 +                                 
11列1 0                                              
12回调1 0                                            
13下一个1 9                                             
14关闭1 0                                             
15暂停0 0                                             
16事务0 0                                             
17 VerifyCookie 0 4                                             
18转到0 1                                             
19 Noop 0 0                                            

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

javascript比较字符串而不区分大小写

不区分大小写的字符串比较怎么办?

如何进行不区分大小写的字符串比较?

如何将空格更改为下划线并使字符串不区分大小写?

Go模板中不区分大小写的字符串比较

Go中不区分大小写的字符串比较

SQL区分大小写的字符串比较

C ++中不区分大小写的字符串比较

C ++ 11是否引入了不区分大小写的字符串比较算法?

如何比较不区分大小写和不区分重音的字符串

为什么在进行不区分大小写的字符串比较时避免使用string.ToLower()?

如何进行不区分大小写的字符串比较?

如何使字符串不区分大小写

C#Expression类方法扩展,使字符串比较不区分大小写

如何在Spark RDD中比较不区分大小写的字符串?

如何比较不区分大小写的字符串?

如何构造正则表达式以比较Shell脚本中不区分大小写的字符串?

比较字符串而不区分大小写

如何比较不区分大小写的字符串

比较未知对象类型时,如何确保字符串不区分大小写?

Fortran中不区分大小写的字符串比较

实体框架核心Cosmos Db-如何比较不区分大小写的字符串?

如何使字符串替换不区分大小写

不区分大小写的字符串数组比较

如何区分大小写比较字符串?

Puppet 中区分大小写的字符串比较

如何制作一个函数来比较字符串而不区分大小写,不使用 strcmpi()

= 在 Delphi 中是区分大小写还是不区分字符串的比较?

如何将字符串解析为与第 3 方板条箱中的类型不匹配的大小写?