第十章模糊函数和聚合函数

** 模糊查询:《模糊查询可以使用like、通配符来进行》


-- 通配符:
_ 一个字符
例:A like 'C_' 符合条件的A   如:CS、Cd


% 任意长度的字符串
例:B like 'CO%'符合条件的B 如:CONST、COKE


[] 括号中所指定范围内的一个字符
例:C like '9W0[1-2]'符合条件的C 如:9W01、9W02


[^] 不在括号中所指定范围内的任意一个字符
例:D like '9W0[^1-2]'符合条件的D 如:9W03、9W07




** 使用 like 进行模糊查询


查询姓‘张’学生信息:
语句:select * from Student where SName like '张%'

查询住址包含‘湖南’字样的学生:
语句:select * from Student where SAddress like '%湖南%'




** 使用 between 在某个范围内进行查询:
解释:查询两个已知值之间的值或不是两个值之间的值。已知值分为:初值、终值。初值<=终值。
初值和终值之间用 and 分开。


例:分数在60 到 80 之间的信息:
select  列名,列名 from 表名 where 列名 between 60 and 80


实例: select  StudentID,Score from Core where Score between 60 and 80

如果写成下面的形式:《不会报错,但也不会显示任何信息》
select  StudentID,Score from Core where Score between 80 and 60 《数值应该是从小到大》



** 查询日期范围《这个使用的比较多》
例:查询不在 2013-1-1 到 2013-10-1 之间订购的图书:
select * from 表名 where 列名 not between '2013-1-1' and '2013-10-1'


实例: select * from Sales where ord_date between '2013-1-1' and '2013-10-1'

注:使用 not 来对现在条件进行‘取反’操作
实例: select * from Sales where ord_date not between '2013-1-1' and '2013-10-1'




** 使用 in 在列举值内进行查询:
查询的值是某些值里面的某一个,这时就可以用列举值 in 来进行查询。《将列举值放在圆括号里,用逗号分开。》


例:查询湖南、广州、上海的学生姓名
select SName as 学生姓名,SAddress as 地址
from Student
where left(SAddress,2) in ('湖南','广州','上海')

注:使用 not 可以得到所有不匹配的列举值的行。《列举值类型必须与匹配的列具有相同的数据类型》




*** T-SQL 中的聚合函数


** sum()函数:返回表达式中所有数值的和,空值将被忽略。《只用于数字类型的列。不能够汇总字符、日期等其他数据类型。》
例:查询学生编号为23的考试总分。
select sum(列名) as 学生编号为23的总分 from 表名 where StudentID=23


实例: select sum(Scores) as 学生编号为23的总分 from Score where StudentID=23



注意:这种查询只返回一个数值,因此,不能直接与可能返回多行的列一起使用来进行查询。
例: select sum(Scores) as 学生编号为23的总分 ,CourseID as 科目编号 from Score where StudentID=23
将会报错!《但是在一个查询中可以同时使用多个聚合函数》



** avg()函数:返回表达式中所有数值的平均值,空值将被忽略。《只用于数字类型的列》
例: 及格学生平均分成绩
select avg(Scores) as 及格成绩平均分 from Score wher Scores>=60




** max()函数 和 min()函数
max :返回表达式中的最大值《忽略任何空值》
min :返回表达式中的最小值《忽略任何空值》
可用于 数值类型、字符类型、日期类型、时间类型 的列。
对于字符的列:max()函数查找排序序列的最大值、min()函数返回排序序列的最小值。


例:查询平均成绩、最高分、最低分。
select avg(Scores) as 平均分,max(Scores) as 最高分,min(Scores) as 最低分 from Score where Scores>=60


** count()函数:返回提供的组或记录集中的计数。用于《除 text、image、ntext外的任何类型的列》
               也可以用 * 来作为count()的表达式,使用*可以不必指定特定的列而计算所有行的数,当对所有行进行计数时,则包含空值的行。


例:查询总记录数的语句:
select count(*) as 总记录数 from Score


例:查询单列 Scores 记录数的语句:
select count(Scores) as 总记录数 from Score 


例;验证登录用户密码语法
select count(*) from 表名 where  name="Jack" and pwd="123456"

原文地址:https://www.cnblogs.com/1402380606HZ/p/7724261.html