3.4.2 字符串运算
字符串放在单引号中
SQL
使用一对单引号来标示字符串,例如'Computer'
。
字符串中有单引号时怎么办
如果单引号是字符串的组成部分,就需要放到双引号中,然后单引号要写变成两个单引号,如字符串"it's right"
可表示为"it''s right"
。
SQL
标准中字符串大小写敏感
在SQL
标准中,字符串上的相等运算是大小写敏感的
MySQL
匹配字符串时默认不区分大小写
然而一些数据库系统,如MySQL
和SQL Server
,在匹配字符串时并不区分大小写,然而这种默认方式是可以在数据库级或特定属性级被修改的。
SQL
字符串函数
SQL
还允许在字符串上有多种函数,例如
- 串联(使用”
‖
“)、 - 提取子串、
- 计算字符串长度、
- 大小写转换(用
upper(s)
将字符串s
转换为大写,或用lower(s)
将字符串s
转换为小写)、 - 去掉字符串后面的空格(使用
trim(s)
),
不同数据库系统所提供的字符串函数集是不同的,请参阅你的数据库系统手册来获得它所支持的实际字符串函数的详细信息.
like操作符对字符串进行模式匹配
在字符串上可以使用like
操作符来实现模式匹配。我们使用两个特殊的字符来描述模式
- 百分号(
%
):匹配任意子串。也就是0个或者0个以上的字符. - 下划线(
_
):匹配任意一个字符。
模式
是大小写敏感的,也就是说,大写字符与小写字符不匹配,反之亦然。为了说明模式匹配,考虑下列例子:
'Intro%'
匹配任何以"lnro"
打头的字符串%Comp%
匹配任何包含"Comp"
子串的字符串,例如'Intro. to Computer Science'
和'Computational Biology'
'___'
匹配只含三个字符的字符串。'___%'
匹配至少含三个字符的字符串。
1 | mysql> select title from course where title like 'Intro%'; |
1 | mysql> select title from course where title like "%Comp%"; |
SQL查询: 找出所在建筑名称中包含子串'Watson'
的所有系名
1 | select dept_name |
1 | mysql> select dept_name |
转义字符
为使模式中能够包含特殊模式的字符(即%
和_
),SQL
允许定义转义字符。转义字符直接放在特殊字符的前面,表示该特殊字符被当成普通字符。
定义转义字符
我们在like
比较运算中使用escape
关键词来定义转义字符。为了说明这一用法,考虑以下模式,它使用反斜线(\
)作为转义字符:
like 'ab\%cd%' escape '\'
:匹配所有以”ab%cd
“开头的字符串。like 'ab\\cd%' escape '\'
:匹配所有以”ab\cd
“开头的字符串。
搜寻不配配 not like
SQL
允许使用not like
比较运算符搜寻不匹配项。一些数据库还提供like
运算的变体,不区分大小写.
SQL:1999提供的similar to进行匹配
在SQL:1999
中还提供similar to
操作,它具备比like
运算更强大的模式匹配能力。它的模式定义语法类似于Unix
中的正则表达式。
原文链接: 3.4.2 字符串运算