VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > MongoDB >
  • SQL Server 2008教程之运算符

运算符

运算符实现运算功能,用来指定在一个或多个表达式中执行操作的符号,以产生新的结果。在SQL Server 2008中,运算符可以分为:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符、字符串连接运算符和一元运算符。
1.算术运算符
算术运算符是用于对两个表达式进行数学运算的运算符,一般得到的结果是数值型。表4-2列出了SQL Server中的主要算术运算符。
表4-2  算术运算符
运算符 说明
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算,如果两个表达式值都是整数,那么结果只取整数值,小数值将略去
% 取模运算,返回两数相除后的余数
例如下列T-SQL数学运算语句所示:
SELECT 2.5+5.6 '加'
SELECT 5.9-1 '减'
SELECT 2.0*5.0 '浮点型乘'
SELECT 2*5 '整数乘'
SELECT 10.0/15.0 '浮点型除'
SELECT 10/15 '整数除'
SELECT 90/16 '取模'
在查询管理器中执行上述语句,运行结果如图4-2所示。



图4-2  执行数学运算的结果
从上面执行的结果中可以看到,浮点型数值和整数型数值的乘除法运算得到的结果并不相同,这时因为,有浮点型数值的运算结果的类型是浮点型,而整数型数值运算结果的类型是整数,所以,整数型乘除只保留整数。
2.赋值运算符
在Transact-SQL语言中,赋值运算符只有等号“=”一个。赋值运算符有两个主要的用途:第一个是给变量赋值,如下语句所示。
DECLARE @URL varchar(20)
SET @URL = 'http://www.baidu.com'
第二个是在WHERE子句中提供查询条件,如下语句所示:
SELECT * FROM 学生信息
WHERE 籍贯 = '上海'
3.位运算符
位运算符在两个表达式之间执行位操作,这两个表达式可以是任意两个整数数据类型的表达式。位运算符的符号及其定义如表4-3所示。
表4-3  位运算符
运算符 描述
& 位与逻辑运算,从两个表达式中取对应的位。当且仅当输入表达式中两个位的值都为1时,结果中的位才被设置为1,否则,结果中的位被设置为0
| 位或逻辑运算,从两个表达式中取对应的位。如果输入表达式中两个位只要有一个的值为1时,结果的位就被设置为1,只有当两个位的值都为0时,结果中的位才被设置为0
^ 位异或运算,从两个表达式中取对应的位。如果输入表达式中两个位只有一个的值为1时,结果中的位就被设置为1;只有当两个位的值都为0或1时,结果中的位才被设置为0
例如,下列语句分别计算2与51的位与、位或、位异或的运算结果。
SELECT 5 & 51 '位与'
SELECT 5 | 51 '位或'
SELECT 5 ^ 51 '位异或'
执行该语句,运算结果如图4-3所示。

图4-3  执行位运算符的结果
在位与运算中,5的二进制值为0000 0000 0000 0101,51的二进制值为0000 0000 0011 0011。根据位与运算规则,当且仅当输入的表达式中两个位的值都为1时,结果中的位才被设置为1;否则,结果中的位被设置为0。那么,5与51的位与逻辑运算值为0000 0000 0000 0001,而二进制为0000 0000 0000 0001的十进制值就是1。
4.比较运算符
比较运算符用来测试两个表达式是否相同。除了text、ntext或image数据类型的表达式外,比较运算符可以用于所有的表达式。比较运算符的符号及其表达式如表4-4所示。
表4-4  比较运算符
运算符 描述 运算符 描述
= 等于 <>  不等于
大于 != 不等于
小于 !< 不小于
>= 大于或等于 !> 不大于
<= 小于或等于    
5.逻辑运算符
逻辑运算符用于对表达式或操作数进行比较或测试,其运算结果返回的是布尔类型的值,即true或false。true表示条件成立,flase则表示条件不成立。在Transact-SQL中可使用逻辑运算符如表4-5所示。
表4-5  逻辑运算符
运算符 说明
ALL 如果一组的比较都为true,则比较结果为true
AND 如果两个布尔表达式都为true,则结果为true;如果其中一个表达式为false,则结果为false
ANY 如果一组的比较中任何一个为true,则结果为true
BETWEEN 如果操作数在某个范围之内,那么结果为true
EXISTS 如果子查询中包含了一些行,那么结果为true
IN 如果操作数等于表达式列表中的一个,那么结果为true
LIKE 如果操作数与某种模式相匹配,那么结果为true
NOT 对任何其他布尔运算符的结果值取反
OR 如果两个布尔表达式中的任何一个为true,那么结果为true
SOME 如果在一组比较中,有些比较为true,那么结果为true
例如,查询数据库“电子书查询系统”中会员所在地区为“北京”或者“上海”的会员,语句如下所示:
USE 电子书查询系统
SELECT *
FROM 会员信息
WHERE 所在地区 LIKE '北京' OR 所在地区 LIKE '上海'
执行语句的结果如图4-4所示。

图4-4  使用逻辑运算符查询结果
在该语句中,使用LIKE和OR逻辑运算符,表示如果数据中会员所在地区有北京或者上海的记录,那么就返回记录。
6.字符串运算符
加号(+)是字符串连接运算符,可以用他将字符串串联起来。其他所有字符串操作都使用字符串函数(如SUBSTRING)进行处理。
默认情况下,对于varchar数据类型的数据,在INSERT或赋值语句中,空的字符串将被解释为空字符串。在串联varchar、char或text数据类型的数据时,空的字符串被解释为空字符串。例如,'abc'+' '+'def被存储为'abcdef'。但是,如果兼容级别设置为65,则空常量将作为单个空白字符处理,'abc'+' '+ 'def'将被存储为'abc def'。
7.一元运算符
一元运算符表示只对一个表达式执行操作。该表达式可以是numeric数据类型中的任何一种数据类型。在Transact-SQL语言中的一元表达式如表4-6所示。
表4-6  一元运算符
运算符 描述
+ 数值为正
- 数值为负
~ 返回数字的逻辑非
8.运算符的优先级
当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序。执行的顺序可能严重地影响所得到的值。SQL Server 2008中运算符优先级如表4-7所示。在一个表达式中按先高后低的顺序进行运算(即数字越小其优先级越高)。
表4-7  运算符优先级
优先级 运算符
1 ~(位非)
2 *(乘)、/(除)、%(取模)
3 +(正)、-(负)、+(加)、(+ 连接)、-(减)、&(位与)
4 =、>、<、>=、<=、<>、!=、!>、!<(比较运算符)
5 ^(位异或)、|(位或)
6 NOT
7 AND
8 ALL、ANY、BETWEEN、IN、LIKE、OR、SOME
9 =(赋值)


相关教程