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