SQL常用运算符

算术运算符:+(加) , -(减) , *(乘) , /(除) , %(取模)

比较操作符:= , < , > , >= , <= , <>
字符串比较:LIKE , NOE LIKE
逻辑操作符:AND , OR , NOT 
值的域:BETWEEN , NOT BETWEEN
值的列表:IN , NOT IN
未知的值: IS NULL , IS NOT NULL
 
1.使用去除空格函数Trim,Ltrim,Rtirm。例如,查询销售表中商品名称等于文本框中商品的数据。本实例使用Trim函数取出字段和文本框中的空格,代码如下:
SELECT * FROM [dbo].[tb_Goods01] WHERE TRIM(产品名称) LIKE TRIM('TXT.TEXT');
 
2.使用字符函数,如Left,Right,Mid函数。例如,查询销售表中商品名称后3个字符问“电视机”的商品,代码如下:
SELECT * FROM [dbo].[tb_Goods01] WHERE RIGHT(产品名称,3)like '电视机';
 
3.使用数字函数,如ABS,Len等函数。例如,查询销售表中利润(包括负利润)小于20的商品,代码如下:
SELECT 产品名称,利润 FROM [dbo].[tb_Goods01] WHERE ABS(利润)<20
 
4.使用日期时间函数,如Year,Month函数。例如,查询销售表中销售年份为2165年的商品,代码如下:
SELECT * FROM [dbo].[tb_Goods01] WHERE YEAR(销售年份)='2005'
SELECT * FROM tb_xsb where MONTH(日期) = 08
 
5.查询记录中字段值长度等于某一数值,代码如下:
SELECT * FROM [dbo].[tb_Goods01] WHERE LEN(列名)=2
 
6.查询记录中姓名为“本子”、“书籍”、“毛巾”的学生,代码如下:
SELECT * FROM [dbo].[tb_Goods01] WHERE 产品名称 IN('本子','书籍','毛巾')
 
7.查询客房状态为‘空房’且客房价钱不再80-150元之间的客房信息
SELECT * FROM [dbo].[tb_kf01] where 房态 = '空房' AND NOT(价格 BETWEEN 80 AND 150 )
 
8.在分组查询中使用CUBE运算符。CUBE运算符的主要作用是自动对GROUP BY字句中列出的字段进行分组汇总运算。CUBE运算符生成的结果集是多维数据集。CUBE运算符在SQL语句的GROUP BY字句中指定,该SQL语句的选择列表应包含维度列和聚合函数表达式,GROUP BY应指定维度列和关键字WTTH CUBE。结果集将包含维度列中各值的所有可能组合,以及这些维度值组合相匹配的基础行中的聚合值。CUBE关键字在进行分组、总计数据统计时非常有用,但是一旦使用CUBE关键字就不能使用ALL关键字。
SELECT 所属部门,性别,AVG(工资)AS 平均工资 FROM 工资表 GROUP BY 所属部门,性别 WITH CUBE
 
9.在分组查询中使用ROLLUP运算符。在生成包含小计和合计的报表时,ROLLUP运算符很有用。ROLLUP运算符生成的结果集类似于CUBE运算符所生成的结果集。
CUBE和ROLLUP之间的区别如下:
CUBE生成的结果集显示了所选列中值的所有组合的聚合数据。
ROLLUP生成的结果集显示了所选列中值的某一层次结果的聚合数据。
SELECT 所属部门,性别,AVG(工资)AS 平均工资 FROM 工资表 GROUP BY 所属部门,性别 WITH ROLLUP
 
10.使用UNION关键字合并多个结果集。它可以将两个或多个SELECT语句的查询结果合并成一个结果集。使用union运算符合并的结果集都必须具有相同的结构,相应结果集中列的数据类型必须兼容。当查询的数据在不同的地方,并且无法用一个查询语句得到时,使用UNION元素安抚是非常有用的,代码如下:
select 顾客编号 as 编号,顾客姓名 as 姓名,所在城市,邮编 from 顾客表 
union 
select 雇员编号,雇员名称,家庭住址,邮编 from 雇员表
 
11.嵌套查询在查询系统中的应用
>ALL:表示大于条件的每一个值,换句话说,大于最大值。例如,>ALL(1,2,3)表示大于3。
select* from cjd where 数学 > all (select 数学 from cjd where 姓名 in('刘*心','达*成'))
>ANY:表示至少大于条件中的一个值,换句话说,大于最小值。例如,>ANY(1,2,3)表示大于1。ANY和SOME是等效的。
select* from cjd where 数学 > any (select 数学 from cjd where 姓名 in('刘*心','达*成'))

posted on 2016-02-23 17:21  周肉肉  阅读(2052)  评论(0编辑  收藏  举报

导航