SQLServer常用函数

本文介绍了SQL中的关键函数,包括数字函数如ABS(), CEILING(), FLOOR(), ROUND();字符串函数如LEN(), LOWER(), UPPER(), LTRIM(), RTRIM(), SUBSTRING();日期函数如GETDATE(), DATEADD(), DATEDIFF(), DATEPART();类型转换函数如CAST(), CONVERT();空值处理函数ISNULL();以及CASE函数的不同用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数字函数(*)
ABS() :求绝对值。
CEILING():舍入到最大整数 。3.33将被舍入为4、2.89将被舍入为3、-3.61将被舍入为-3。 Ceiling→天花板
FLOOR():舍入到最小整数。3.33将被舍入为3、2.89将被舍入为2、-3.61将被舍入为-4。 Floor→地板。
ROUND():四舍五入。舍入到“离我半径最近的数” 。Round→“半径”。Round(3.1425,2)。

字符串函数(*)
LEN() :计算字符串长度
LOWER() 、UPPER () :转小写、大写
LTRIM():字符串左侧的空格去掉 
RTRIM () :字符串右侧的空格去掉 
LTRIM(RTRIM('         bb        '))
SUBSTRING(string,start_position,length)
参数string为主字符串,start_position为子字符串在主字符串中的起始位置,length为子字符串的最大长度。
SELECT  SUBSTRING('abcdef111',2,3) 

日期函数
GETDATE() :取得当前日期时间 
DATEADD (datepart , number, date ),计算增加以后的日期。参数date为待计算的日期;参数number为增量;参数datepart为计量单位,可选值见备注。DATEADD(DAY, 3,date)为计算日期date3天后的日期,而DATEADD(MONTH ,-8,date)为计算日期date8个月之前的日期 
DATEDIFF ( datepart , startdate , enddate ) :计算两个日期之间的差额。 datepart 为计量单位,可取值参考DateAdd。
统计不同工龄的员工的个数:
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)

类型转换函数
CAST ( expression AS data_type)
CONVERT ( data_type, expression) 
SELECT FIdNumber,
RIGHT(FIdNumber,3) as 后三位,
CAST(RIGHT(FIdNumber,3) AS INTEGER) as 后三位的整数形式,
CAST(RIGHT(FIdNumber,3) AS INTEGER)+1 as 后三位加1,
CONVERT(INTEGER,RIGHT(FIdNumber,3))/2 as 后三位除以2
FROM T_Person

空值处理函数
ISNULL(expression,value) :
如果expression不为空则返回expression,否则返回value
SELECT ISNULL(FName,'佚名') as 姓名 FROM
T_Employee 


CASE函数用法1
单值判断,相当于switch case
CASE expression 
           WHEN value1 THEN returnvalue1 
           WHEN value2 THEN returnvalue2 
           WHEN value3 THEN returnvalue3 
           ELSE defaultreturnvalue 
      END 
例子SELECT  
SELECT  FName, 
(CASE FLevel   WHEN 1 THEN 'VIP客户'  
    WHEN 2 THEN '高级客户'  
    WHEN 3 THEN '普通客户' 
    ELSE '客户类型错误'  
    END) as FLevelName 
FROM T_Customer

select FName,
(
case FLevel
when 1 then '普通客户'
when 2 then '会员'
when 3 then 'VIP'
else  '未知客户类型'
end
) as 客户类型
from T_Customer
select FName,
(
case
when FSalary<2000 then '低收入'
when FSalary>=2000 and FSalary<=5000 then '中等收入'
else '高收入'
end
) as 收入水平
from T_Employee

CASE函数用法2
CASE 
           WHEN condition1 THEN returnvalue1 
           WHEN condition 2 THEN returnvalue2 
           WHEN condition 3 THEN returnvalue3 
           ELSE defaultreturnvalue 
END 
相当于if…else…else….
SELECT  FName, FWeight, 
(CASE 
          WHEN FWeight<40 THEN ‘瘦瘦'  
          WHEN FWeight>50 THEN ‘肥肥'  
          ELSE 'ok'  
          END) as isnormal 
FROM T_Person

表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
select (case when a>b then a else b end),(case when b>c then b else c end ) from t 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值