四舍五入
select ROUND(1.01,1) 结果1.00
计算字符串的长度
select LEN('Hello王') 结果6
计算字符串字节:中文占两个字节
select LENGTH('Hello王') 结果7
转大小写
LOWER(),UPPER()
截取字符串:
RIGHT(‘abc’,2) 结果bc
LEFT(‘abcd’,2) 结果ab
字符串左.右侧的空格去掉
LTRIM(),RTRIM()
截取字符串:从1开始
SUBSTRING(string,start_positon,length)
select SUBSTRING('abcdef111',2,3) 结果:bcd
获取当时时间:
select GETDATE()
计算增加以后的日期:
DATEADD(datepart,number,date) datepart为年月日,number为时间差,date为基础时间
select DATEADD(YEAR,3,GETDATE()) 结果:在现在时间上增加三年,如果减三年则为-3
select GETDATE()+3 结果:加三天
求时间差:
DATEDIFF(datepart,startdate,enddate)
select DATEDIFF(YEAR,GETDATE(),‘2014-08-08’)
获取日期的特定部分:
select DATEPART(YEAR,GETDATE())
例子:选取一个表中汇总统计同年入职的员工个数
SELECT DATEPART(YEAR,FinDate),count(*)from T_Employee group by DatePart(Year,FinDate)
cast要转换的值as要转换的类型
select CAST(right(‘fadf232011-08-09’,10)as datetime)
替换null值的函数:
isnull(fname,‘未名’)
select isnull(fname,'未名')from T_Employee
case函数:
select fage,case fage
when 29 then '高龄'
when 27 then'正当壮年'
else '乳臭未干'
end
from t_employee
或者 限制字段范围
select fage,case
when fage>=29 then'高龄'
when fage<27 then'小孩'
else '乳臭未干'
end
from t_employee
联合查询
select* from book b,Category c
where b.b_cid=c.c_id
内连接 inner join
select c.c_name,b.* from book b inner join category c
on b.b_cid=c.c_id
select *from category c right join book b
on b.b_cid=c.c_id
左外连接(左链接)以保证左表数据全部显示为核心目标
select *from category c left outer join book b
on b.b_cid=c.c_id
右外连接(右链接)以保证右表数据全部显示为核心目标
select *from category c right outer join book b
on b.b_cid=c.c_id
全连接,保证左右两个表的数据全部显示出来
select* from category c full join book b
on b.b_cid=c.c_id
sql语句函数
2023-10-14 15:47:46