聚合函数
AVG()
- 返回组中各值的平均值。其中忽略NULL
- 列值的类型必须为数字型(整数、小数)
select avg(列名)
from 表名
SUM()
- 返回表达式中所有值的和。其中忽略NULL
- SUM只能用于数字类型
select sum(列名)
from 表名
MIN()
- 返回表达式的最小值。其中忽略NULL
- 列值类型可为数字型或字符型
select min(列名)
from 表名
MAX()
- 比较多个对象并返回较大对象。其中忽略NULL
- 列值类型可为数字型或字符型
select max(列名)
from 表名
其中字符类型大小的比较是以字母顺序表为准。
COUNT()
- 返回表的行数。其中忽略NULL
- 列值的返回类型为整形
select count(列名)
from 表名
count(*)返回总行数,count(列名)返回该列值中除NULL外的行数。
其它函数
LEN()
- 返回一个字符串表达式的长度
- 其中不包含尾随空格
- 返回表达式的字节数,用DATALENGTH()
select len(列名)
from 表名
随机数的产生
随机小数
select rand()
随机整数
- 返回小于或等于所给数字表达式的最大整数
select floor(rand()*N);
floor(9.1782)=9
范围为0~N-1
- 返回大于或等于所给数字表达式的最小整数
select ceiling(rand()*N);
ceiling(9.1782)=10
范围为1~N
时间获取
GETDATE()
返回当前数据库系统时间,返回值的类型为datetime
select getdate();
GETUTCDATE()
返回当前国际表示时间,返回值的类型为datetime
select getutcdate();
CONVERT()
- 把日期转换为新数据类型的通用函数
- 可以用不同的格式显示日期/时间数据
- COUNVERT(返回格式的长度,要转换格式的函数,style)
Style ID | Style 格式(只列举部分) |
---|---|
100或0 | m d y h:miAM(PM) |
101 | m/d/y |
102 | y.m.d |
103 | d/m/y |
104 | d.m.y |
105 | d-m-y |
106 | d m y |
107 | m d,y |
108 | hⓂ️s |
109或9 | m d y hⓂ️s:mAM(或PM) |
110 | m-d-y |
111 | y/m/d |
112 | ymd |
113或13 | d m y hⓂ️s:m(24h) |
m-month,d-day,y-year,m-minute,s-second
举例
select convert(varchar(10),getdate(),105)
//26-06-2022
select convert(varchar(9),getdate(),105)
//26-06-202
select convert(varchar(10),getdate(),111)
//2022/06/22
DATEDIFF()
该函数返回两个日期之间的天数
select DATEDIFF(second/minute/hour/day/month/year,startdate,enddate);
select DATEDIFF(day,'2022-06-26','2022-06-30');
//4
select DATEDIFF(day,'2022-06-30','2022-06-26');
//-4
startdate,enddate一定是标准格式日期
DATEADD()
该函数用于在日期中添加和减去指定的时间间隔
dateadd(second/minute/hour/day/month/year,num,date)
select dateadd(day,4,'2022-06-26');
//2022-06-30 00:00:00.000
select convert(varchar(10),dateadd(day,4,'2022-06-26'),120);
//2022-06-30
DATEPART()
- 该函数用于返回日期/时间的单独部分
- 返回的是一个int型
- 有两个参数,第一个参数是要返回时间的单独部分,第二个是具体时间也可以是用函数获取具体时间
select datepart(year/yyyy/yy,getdate());
//2022
select datepart(day/dddd/dd,'2022-06-27');
//27
DATENAME()
- 该函数也是用于返回日期/时间的单独部分
- 返回的是一个varchar型
- 参数规则同上面一样
select datename(month/mmmm/mm,getdate());
//06
select datename(hour/hh,'13:22:49');
//13
DAY()、MONTH()、YEAR()
该函数只有一个参数,为具体日期或用函数获取的日期。
对字符串操作的函数
CHARINDEX()
返回字符串或者在另一个字符串中的起始位置
charindex(s1,s2,n);
该函数是在s2中查找s1的所在位置,第三个参数为可选,表示从s2中第n个元素开始查找。它返回的是一个整数。字符串的下标从1开始,若未找到,则返回0。
PATINDEX()
其作用跟上面的函数一样,但是这个函数支持在搜索字符串中使用通配符。和CHARINDEX函数一样,它返回的也是s1在s2中的起始位置。例如:
patindex('%BC%','ABCD');
//2
STUFF()
该函数用于删除或替换指定长度的字符,返回的是一个字符类型。
select stuff(字符串/列名,开始位置,长度,替代字符串)
select stuff('wonderfull',1,6,'');
//full
select stuff('aabbccdd',3,4,'eeff');
//aaeeffdd
SUBSTRING()
该函数用于截取指定长度的字符串
select substring('要处理的字符串','开始位置','截取长度');
select *,substring('列名','开始位置','截取长度') as 新增加列的列名
from 表名
where...
第二种方法会将从某列的列值中截取的字符段组成一个新的列。
RIGHT()和LEFT()
right函数是从最右端开始向左截取字符串
left函数是从最左端开始向右截取字符串
select right/left('要处理的字符串','截取长度');
select *, right/left(列名,'截取长度')
from 表名
where...
注意:截取长度只能是正整型
LTRIM()、RTRIM()
ltrim是将字符串左边的空格去掉
rtrim是将字符串右边的空格去掉
select ltrim/rtrim('要处理的字符串';
select *,ltrim/rtrim(列名) as 新列名
from 表名;
UPPER()、LOWER()
upper将小写字符转换为大写字符
lower将大写字符转换为小写字符
规则与前面一样
REPLACE()
select replace(字符串,要替换的字符串,指定的字符串);
select replace('abcdefg','abc','xyz');
//xyzdefg
select replace('abcdefgabc','abc','xyz');
//xyzdefgxyz
REPLICATE()、SPACE()
replicate返回指定次数的重复字符表达式
space返回指定个数的空格
select replicate('字符串',n);//n为重复次数
select space(n);//n为空格的个数
REVERSE()
倒置字符串
select reverse('字符串');
CAST()
将某种数据类型的表达式显式地转换为另一种表达式
select cast(表达式 as 数据类型);
CASE()
case函数是一种简单的条件判断转换的一个函数,它会把满足条件的表达式转换为对应的结果
select *,
case when 条件表达式1 then '结果1'
when 条件表达式2 then '结果2'
...
else '结果n' end
from 表名