SQL Sever 基础函数

聚合函数

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()

随机整数

  1. 返回小于或等于所给数字表达式的最大整数
select floor(rand()*N);		
floor(9.1782)=9

范围为0~N-1
  1. 返回大于或等于所给数字表达式的最小整数
select ceiling(rand()*N);
ceiling(9.1782)=10

范围为1~N

时间获取

GETDATE()

返回当前数据库系统时间,返回值的类型为datetime

select getdate();

GETUTCDATE()

返回当前国际表示时间,返回值的类型为datetime

select getutcdate();

CONVERT()

  • 把日期转换为新数据类型的通用函数
  • 可以用不同的格式显示日期/时间数据
  • COUNVERT(返回格式的长度,要转换格式的函数,style)
Style IDStyle 格式(只列举部分)
100或0m d y h:miAM(PM)
101m/d/y
102y.m.d
103d/m/y
104d.m.y
105d-m-y
106d m y
107m d,y
108hⓂ️s
109或9m d y hⓂ️s:mAM(或PM)
110m-d-y
111y/m/d
112ymd
113或13d 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 表名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值