-
SQL Server 2008教程之运算符
运算符
运算符实现运算功能,用来指定在一个或多个表达式中执行操作的符号,以产生新的结果。在SQL Server 2008中,运算符可以分为:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符、字符串连接运算符和一元运算符。1.算术运算符
算术运算符是用于对两个表达式进行数学运算的运算符,一般得到的结果是数值型。表4-2列出了SQL Server中的主要算术运算符。
表4-2 算术运算符
运算符 | 说明 |
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算,如果两个表达式值都是整数,那么结果只取整数值,小数值将略去 |
% | 取模运算,返回两数相除后的余数 |
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所示。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 执行数学运算的结果
从上面执行的结果中可以看到,浮点型数值和整数型数值的乘除法运算得到的结果并不相同,这时因为,有浮点型数值的运算结果的类型是浮点型,而整数型数值运算结果的类型是整数,所以,整数型乘除只保留整数。
2.赋值运算符
在Transact-SQL语言中,赋值运算符只有等号“=”一个。赋值运算符有两个主要的用途:第一个是给变量赋值,如下语句所示。
DECLARE @URL varchar(20)
SET @URL = 'http://www.baidu.com'
第二个是在WHERE子句中提供查询条件,如下语句所示:SET @URL = 'http://www.baidu.com'
SELECT * FROM 学生信息
WHERE 籍贯 = '上海'
3.位运算符WHERE 籍贯 = '上海'
位运算符在两个表达式之间执行位操作,这两个表达式可以是任意两个整数数据类型的表达式。位运算符的符号及其定义如表4-3所示。
表4-3 位运算符
运算符 | 描述 |
& | 位与逻辑运算,从两个表达式中取对应的位。当且仅当输入表达式中两个位的值都为1时,结果中的位才被设置为1,否则,结果中的位被设置为0 |
| | 位或逻辑运算,从两个表达式中取对应的位。如果输入表达式中两个位只要有一个的值为1时,结果的位就被设置为1,只有当两个位的值都为0时,结果中的位才被设置为0 |
^ | 位异或运算,从两个表达式中取对应的位。如果输入表达式中两个位只有一个的值为1时,结果中的位就被设置为1;只有当两个位的值都为0或1时,结果中的位才被设置为0 |
SELECT 5 & 51 '位与'
SELECT 5 | 51 '位或'
SELECT 5 ^ 51 '位异或'
执行该语句,运算结果如图4-3所示。SELECT 5 | 51 '位或'
SELECT 5 ^ 51 '位异或'
图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 比较运算符
运算符 | 描述 | 运算符 | 描述 |
= | 等于 | <> | 不等于 |
> | 大于 | != | 不等于 |
< | 小于 | !< | 不小于 |
>= | 大于或等于 | !> | 不大于 |
<= | 小于或等于 |
逻辑运算符用于对表达式或操作数进行比较或测试,其运算结果返回的是布尔类型的值,即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所示。SELECT *
FROM 会员信息
WHERE 所在地区 LIKE '北京' OR 所在地区 LIKE '上海'
图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 一元运算符
运算符 | 描述 |
+ | 数值为正 |
- | 数值为负 |
~ | 返回数字的逻辑非 |
当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序。执行的顺序可能严重地影响所得到的值。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 | =(赋值) |
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式