1.聚合函数
MAX():求最大值
MIN(): 求最小值
AVG(): 求平均值
SUM(): 求和
2.ABS():求绝对值
select ABS(-3) ;
-- 3;
天花板→CEILING():舍入到最大整数。3.33将被舍入为4
2.89将被舍入3.-3.61将被舍入为-3
地板→FLOOR():舍入到最小整数,3.33→3,2.89→2,-3.61→-4
ROUND:四舍五入
3.字符串函数
LEN():计算字符串长度
LOWER()、UPPER():转小写大写
LTRIM()、RTRIM():去掉字符串左边和右边的空格
select LTRIM(' e '); --e
select RTRIM(' e '); -- e
去掉两边空格
selectLTRIM(RTRIM(' e ')) --e
SUBSTRING(string、start_position、length):参数string为主字符串,
start_position为子字符串在主字符串中的起始位置,length为子字符串的最大长度,sekect substring(‘abcdef111',2,3)
-- bcd
日期函数
GETDATE():取得当前日期时间
DATEADD(datepart,number,date),计算增加以后的日期。
select
dateADD
(
day
,-
3
,
getdate
()) --往前推三天
select
DATEadd
(
hh
,
1
,
getdate
()) --小时增加1
参数date为待计算的日期
参数number为增量
参数datepart为计量单位,可选值见备注 、
DATEADD(day,3,date) 计算日期date的三天后的日期,
而DATEADD(month,-8,date)为计算日期date的8个月前的日期
DATEDIFF(detepart,startdate,enddate): 计算两个日期之间的差额
,datepart为计量单位,可取值参考DATEADD
select
datediff
(
hh
,
getdate
(),
dateadd
(
day
,-
3
,
getdate
()))
-- -72
select
datediff
(
year
,
findate
,
getdate
()),
count
(*)
From
T_Employee
group
by
datediff
(
year
,
Findate
,
getdate
())
DATEPART(datepart,date):返回一个日期的特定部分
select
datepart
(
year
,
Findate
),
count
(*)
from
T_Employee
group
by
DATEPART
(
year
,
findate
)
select
Datepart
(
year
,
cast
(
'2008-08-08'
as
datetime
)) --2008
类型转换函数
cast(experssion AS data_type)
convert(data_type,expression)
select
cast
(
'123'
as
int
),
cast
(
'2008-08-08'
as
datetime
),
convert
(
datetime
,
'2009-09-09'
),
convert
(
varchar
(
50
),
123
)
空值判断
ISNULL () fname是否为空,如果为空返回哈哈,不为空返回fname的值
select
isnull
(
Fname
,
'哈哈'
)
as
姓名
From
T_Employee
CASE函数用法 类似与C#中的switch case
select
FName
,
(
case
Flevel
when
1
then
'普通客户'
when
2
then
'会员'
when
3
then
'VIP'
else
'未知客户类型'
end
)
as
客户类型
from
vip
case 也可以用作if else类型
select
FName
,
(
case
when
FSalary
<
2000
then
'低收入'
when
FSalary
>=
2000
and
FSAlary
<=
5000
then
'中等收入'
else
'高收入'
end
)
as
收入水平
from
T_Employee
TOP 的用法 和 取什么到什么之间的用法
TOP 是取前几个
select
top
3
TNumber
,
datediff
(
ss
,
tstart
,
tend
)
as
通话时间
from
这个是取什么到什么范围之内
Test2
order
by
通话时间
desc
select
*
from
(
Select
*
from
T_Employee
where
FNumber
not
in
(
Select
top
3
FNumber
from
T_Employee
order
by
FSalary
desc
)
)
as
e1
where
e1
.
FAge
>=
20
and
e1
.
FAge
<=
30