加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 19:23:17 所属栏目:百科 来源:网络整理
导读:我想通过字符串匹配从sqlite3数据库中选择记录。但是如果我在where子句中使用’=’,我发现sqlite3区分大小写。任何人都可以告诉我如何使用字符串比较不区分大小写? 您可以在SELECT查询中使用COLLATE NOCASE: SELECT * FROM ... WHERE name = 'someone' CO
我想通过字符串匹配从sqlite3数据库中选择记录。但是如果我在where子句中使用’=’,我发现sqlite3区分大小写。任何人都可以告诉我如何使用字符串比较不区分大小写? 您可以在SELECT查询中使用COLLATE NOCASE:
SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE

另外,在SQLite中,可以通过在列定义中指定collat??e nocase(其他选项为binary(默认值)和rtrim;请参见here)指示在创建表时不区分大小写。您也可以在创建索引时指定collat??e nocase。例如:

create table Test
(
  Text_Value  text collate nocase
);

insert into Test values ('A');
insert into Test values ('b');
insert into Test values ('C');

create index Test_Text_Value_Index
  on Test (Text_Value collate nocase);

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

sqlite> select Text_Value from Test where Text_Value = 'B';
Text_Value      
----------------
b               

sqlite> select Text_Value from Test order by Text_Value;
Text_Value      
----------------
A               
b               
C    

sqlite> select Text_Value from Test order by Text_Value desc;
Text_Value      
----------------
C               
b               
A               

优化器还可以潜在地利用索引对列进行不区分大小写的搜索和匹配。您可以使用explain SQL命令检查此,例如:

sqlite> explain select Text_Value from Test where Text_Value = 'b';
addr              opcode          p1          p2          p3                               
----------------  --------------  ----------  ----------  ---------------------------------
0                 Goto            0           16                                           
1                 Integer         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                Column          1           0                                            
12                Callback        1           0                                            
13                Next            1           9                                            
14                Close           1           0                                            
15                Halt            0           0                                            
16                Transaction     0           0                                            
17                VerifyCookie    0           4                                            
18                Goto            0           1                                            
19                Noop            0           0                                            

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读