欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Practice:SQLite数据库字串运算实践

程序员文章站 2022-06-28 18:08:21
practice:sqlite字串运算实践 sql 使用一对单引号来标示字符串,例如 'computer',如果单引号是字符串的组成部分,就用两个单引号字符来表示,如字符串 it&r...

practice:sqlite字串运算实践

sql 使用一对单引号来标示字符串,例如 'computer',如果单引号是字符串的组成部分,就用两个单引号字符来表示,如字符串 it’s right 表示为 'it''s right

sql 标准中的字符串相等运算是大小写敏感的,所以表达式 'comp. sci.' = 'comp. sci.' 的结果为假,不过 mysql 和 sql server 之类的数据库在匹配字符串式并不区分大小写,不过这种默认方式是可以在数据库级别或者特定属性级别被修改的

sqlite 是默认是区分大小写的,下面查询返回空结果

sqlite> select * 
   ...> from teaches
   ...> where 'c' = 'c';

sql 还允许在字符串上有多种函数,例如连接,提取子串,计算字串长度,大小写转换和去掉字串末尾空格等,不同数据库所提供的字符串函数集是不同的

在字符串上可以使用 like 操作来实现模式匹配,sql 使用两个特殊的字符来描述模式

百分号 %,匹配任意子串 下划线 _,匹配任意字符

模式时大小写敏感的,为了说明模式匹配,考虑下面几个例子

'intro%' 匹配任何以 intro 打头的字字串 '%comp%' 匹配任何包含 comp 子串的字串 '___' 匹配恰含三个字符的字串 '__%' 匹配至少三个字符的字串

在 sql 中使用 like 运算符,考虑查询,找出所有建筑名称中包含子串 watson 的所有系名,我们有

sqlite> select dept_name
   ...> from department
   ...> where building like '%watson%';
biology
physics

为了使得模式中可以包含特殊字符,即百分号和下划线,sql 允许定义转义字符,注意是自定义而非其他语言中的预定义,自定义转义字符使用 escape 关键字说明

例如 like 'ab\%cd%' escape '\' 定义反斜杠 \ 为转义字符,它匹配所有以 ab%cd 开头的字串,类似的 like 'ab\\cd% escape '\' 匹配所有以 ab\cd 开头的字串

此外还有 similar to 操作,它类似于 unix 中的正则表达式,不过 sqlite 并不支持这个操作