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

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 并不支持这个操作

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐