`
panxq0809
  • 浏览: 296814 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQLite区分大小写查询

阅读更多

大部分数据库在进行字符串比较的时候,对大小写是不敏感的。
但是,在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 );

 

如果在任何情况下都不需要对大小写敏感,方案三是最好的解决方案;

如果只是少量查询对大小写不敏感,可以用方案二。

而方案一由于用到了函数,可能有额外的性能消耗,不推荐使用。

 

 

  • 大小: 18.1 KB
分享到:
评论

相关推荐

    db_text_search:ActiveRecord之上的统一接口,用于不区分大小写的字符串和前缀查询,以及在SQLite,MySQL和PostgreSQL上的全文本搜索

    不区分大小写的字符串设置查询,前缀查询和不区分大小写的索引创建。 基本的全文搜索,用于搜索术语列表,并创建FTS索引。 安装 将此行添加到您的应用程序的Gemfile中: gem 'db_text_search' , '~> 0.3.2' 用法 ...

    SQLite3的性能优化

    其中,0 表示忽略大小写,1 表示区分大小写。 四、count_changes count_changes 是 SQLite3 中的一个重要参数。通过设置 count_changes 标记,可以使得 INSERT, UPDATE 和 DELETE 语句返回数据。缺省情况下,以上...

    SQLite字符串比较时的大小写问题解决方法

    然而,在处理字符串比较时,SQLite默认的行为是区分大小写的,这可能会导致一些未预期的结果,尤其是在用户输入数据时。以下是对SQLite字符串比较时大小写问题的三种解决方法的详细解析: 1. 使用大小写转换函数...

    用python sqlite3给已经有的表增加字段

    用python sqlite3给已经有的表增加字段。sql语句的写法,表名用自己的,其他的请严格区分大小写,要不然不会成功。

    C++ Sqlite3的使用方法

    |SQLite3简介 SQLite3只是一个轻型的嵌入式数据库引擎,占用资源非常低,处理速度比Mysql还快,专门用于移动设备上进行适量的数据存取,它只是...特点:不区分大小写,每条语句后加”;”结尾。 关键字:select、inse

    数据库转sqlite数据库

    access库转sqlite库 1、可以转换access表中的主键、自增长...7、sqlite下,默认是区分大小写的,而access没有,故把字符类型的字段的Collate设置为NOCASE 8、开发所用时间:一周左右(业余时间) 9、开发环境:delphi6+xp

    SQlite JSON Connection

    2. 字符串处理函数:如`Trim`去除字符串首尾空格,`LowerCase`和`UpperCase`进行大小写转换,`CompareText`进行不区分大小写的字符串比较等。 3. 编码和解码:可能包括对Unicode和ASCII编码的支持,如`UTF8ToUTF16`...

    windows下sqlite安装使用和性能优化及设置

    - **说明**:默认情况下,LIKE 运算符对 latin1 字符不区分大小写。如果需要进行精确的大小写匹配,可以通过设置此参数为 1 来启用。 通过以上步骤,你可以成功地在 Windows 系统下安装并使用 SQLite 数据库,并...

    Sqlite3支持的数据类型

    TEXT类型在存储和比较时是区分大小写的,除非使用特定的函数进行转换。 5. BLOB(二进制大对象) BLOB类型用于存储任意的二进制数据,如图像、音频片段或者任何其他非文本格式的数据。BLOB没有特定的字符集,因此不...

    SQLite3中的数据类型

    它不区分大小写,除非使用特定的SQL函数进行比较。TEXT类型可以自动容纳各种长度的字符串,无需预先指定。 5. BLOB类型 BLOB(Binary Large Object)用于存储二进制数据,如图片、音频或文档等。BLOB类型不关心...

    sqlite物理文件结构

    - **B+tree内部页格式分析**:内部页主要用于构建树的层级结构,包含指向子页的指针以及用于区分不同子页范围的键值。 - **B+tree叶子页格式分析**:叶子页包含了具体的键值对,这些键值对按照升序排列,并且相邻...

    sqlitedll-3_3_12

    中文字符集处理可能在这些版本中出现了错误,导致在进行LIKE或ILIKE(不区分大小写的模糊查询)操作时,无法正确返回包含中文字符的结果。而3.3.12版本由于修复了这个问题,所以被视为一个解决此问题的稳定版本。 ...

    DatatypesInSQLiteVersion3中文版SQLite3的数据类型.rar

    SQLite3支持Unicode字符,并且不区分大小写。字符串可以使用单引号或双引号包围。 5. BLOB:代表二进制大对象,用于存储任意字节流,如图片、音频或文档等。 6. NUMERIC:这是一个特殊的数据类型,用于表示数字,...

    access库转sqlite库

    access库转sqlite库 1、可以转换access表中的主键、自增长字段、字段类型、字段长度...7、sqlite下,默认是区分大小写的,而access没有,故把字符类型的字段的Collate设置为NOCASE 8、开发所用时间:一周左右(业余时间)

    android sqlite

    在SQLite中,注释是以连续的两个减号(“--”)开始的,它不区分大小写。创建数据库表时,可以指定字段类型和约束。如 INTEGER PRIMARY KEY AUTOINCREMENT 表示该字段为整数类型的主键并且是自增的。如果某个字段...

    SQLite语法 表达式

    3. `GLOB` 运算符使用 Unix 文件 globbing 语法,区分大小写。 4. `REGEXP` 运算符对应自定义的 `regexp` 用户函数,若未定义则会导致错误。 六、特殊字段 SQLite 提供了几个特殊字段标识符,如 "ROWID"、"OID" 和 ...

    Android-SQLite3_超基础入门

    这些类型不区分大小写。 - **其他特性**:SQLite不支持某些传统关系数据库所具备的功能,例如`FOREIGN KEY`外键约束、`RIGHT OUTER JOIN`和`FULL OUTER JOIN`等。 #### 三、配置与环境准备 在开始使用SQLite之前,...

    SQLite快速入门指南

    例如,可以使用 `alter table` 语句来增加一个 `email` 列,设置为非空且不区分大小写。创建视图和索引同样直观,`create view` 用于创建视图,`create index` 用于创建索引以提高查询性能。视图 `nameview` 将显示 ...

    SQLite Glob 子句

    这一点与LIKE运算符不同,LIKE通常不区分大小写(除非数据库配置为区分大小写)。 其次,GLOB遵循UNIX风格的通配符规则。通配符有两个主要的符号: 1. 星号(*):代表零个、一个或多个数字或字符。 2. 问号(?):...

Global site tag (gtag.js) - Google Analytics