3.4 T-SQL中的运算符及优先级
T-SQL的运算符可以分为算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符、字符连接运算符和一元运算符。
3.4.1 算术运算符
算术运算符包括加(+)、减(-)、乘(*)、除(/)和求余数(%)。
示例3.7
select 2+3 ‘2+3’,2-3 ‘2-3’,2*3 ‘2*3’,2/3 ‘2/3’,5%2 ‘5%2’
执行结果如图3.7所示。
图3.7 算术运算符的使用
3.4.2 赋值运算符
示例3.8
declare @abc int,@xyz char(10)
set @abc=123 set @xyz=‘T-SQL语句’ select @abc,@xyz
执行结果如图3.8所示。
图3.8 赋值运算符的使用
3.4.3 字符串连接运算符
字符串连接运算符是指使用加号(+)将两个字符串连接成一个字符串,加号(+)作为字符串连接符。
示例3.9
declare @abc varchar(5),@xyz char(10) set @abc=‘123’ set @xyz=‘T-SQL语句’ select @abc+@xyz 字符串连接
执行结果如图3.9所示。
图3.9 字符串连接符的使用1
注意点:
将declare @abc varchar(5),@xyz char(10)语句改为declare @abc char(5),@xyz char(10)后的结果如图3.10所示,比较@abc变量在命令中的变量类型。
图3.10 字符串连接符的使用2
3.4.4 比较运算符
比较运算符包括等于(=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、不等于(<>或!=)、不小于(!<)、不大于(!>)。
3.4.5 逻辑运算符
逻辑运算符包括与(and)、或(or)和非(not)等运算符。比较运算和逻辑运算均返回布尔值,值为true或false。
3.4.6 位运算符
位运算符包括按位与(&)、按位或(|)、按位异或(^)和求反(~)。
示例3.10
select 9&3 ‘9&3’,9|3 ‘9|3’,9^3 ‘9^3’,~9 ‘~9’
执行结果如图3.11所示。
图3.11 逻辑运算符的使用
位运算符用来对整型数据或者二进制数据(image数据类型除外)之间执行位操作,并且两个操作数不能同时为二进制数据。
位运算支持的操作数数据类型如表3.12所示。
表3.12 位运算支持的操作数数据类型
3.4.7 运算符优先级
在同一个表达式中可能包含多种运算符,而运算符是有优先级的。运算符的优先级决定了表达式中的各个运算符参加运算的顺序。在T-SQL中,运算符的优先级从高到低如下所示:
括号:()
求反:~
正、负:+、-
乘、除、求模运算符:*、/、%
加、字符串连接和减运算符:+、-
比较运算符:=、>、<、>=、<=、<>、!=、!>、!<
位运算符:^、&、|
逻辑运算符:not
逻辑运算符:and
逻辑运算符:or
赋值运算符:=
3.4.8 条件表达式
在此节引入条件表达式的目的是使读者像理解其他高级语言的条件表达式一样来理解T-SQL中的条件表达式,为学习后续章节中的条件表达式打下基础。
与C语言等课程一样,T-SQL中的表达式是符号和运算符的组合,并且可以对它求值得到单个数据值。简单的表达式可以是一个常数、变量、列或标量函数,可以用运算符把两个或多个简单表达式连接成一个复杂表达式。
T-SQL关系表达式是用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子。
T-SQL条件表达式(也称逻辑表达式)是用逻辑运算符将关系表达式或逻辑量(true、false)连接起来的式子。
T-SQL中还把like关键字与通配符配合使用,在查询中经常会使用like语句。
例如,在学生基本情况表(tblStudent)中查询班级编号是“310220”、“340240”、“340412”的学生基本情况,可以编写如下的条件表达式:
ClassID in (‘310220’, ‘340240’, ‘340412’)
其中,in关键字用来限制范围。
又如,在学生基本情况表(tblStudent)中查询姓名除了姓“刘”以外的学生的基本情况,可以编写如下条件表达式:
StuName not like ‘刘%’
再如,在学生成绩表(tblScore)中查询成绩为70~85分的学生的学号,可以编写如下条件表达式:
Score>=70 and Score<=85