SqlServer常用函数

1)聚集函数

    聚合函数不能出现在WHERE子句中 ,但可以出现在having 后面 或select 后面

    COUNT(*):统计表中元组的个数; -- 除COUNT(*)外,其他函数在计算过程中均忽略NULL值(COUNT(1)和COUNT([DISTINCT] <列名>)都会忽略NULL值);

 

    COUNT([DISTINCT] <列名>):统计列值个数;

 

    SUM(<列名>):计算列值的和值(必须是数值型列);

 

    AVG(<列名>):计算列值的平均值(必须是数值型列);

    MAX(<列名>):得到列值的最大值;

 

    MIN(<列名>):得到列值的最小值;

 

2)时间函数

    1.格式化的标志位

 

        111 = yy/mm/dd

 

        112 = yymmdd

 

        108 = hh:mm:ss

 

        20 or 120 = yyyy-mm-dd hh:mi:ss

 

    2.获取天:DAY() --函数返回date_expression_r 中的日期值

 

    3.获取月:MONTH() --函数返回date_expression_r 中的月份值

 

    4.获取年:YEAR() --函数返回date_expression_r 中的年份值

 

    5.获取系统时间:getdate() -- 获取当前时间 2021-11-28 09:51:53.110 毫秒级别

 

    6.时间相加:select dateadd(MONTH,12,'2013-02-17 13:20:16')

 --日期相加 返回:2014-02-17 13:20:16.000 ,参数month可以改为 day,year等日期加相应的值

 

    7.时间相减:SELECT datediff( day, '1999/07/19', '1999/08/23' ) -- 时间差 year, month, day都可以用

 

    8.时间格式化:select CONVERT(varchar, getdate(), 112 ) -- 时间格式化 20211128 ,注意112是一个编码

 

    9.时间格式替换:select replace(CONVERT(varchar, getdate(), 120 ),'-','/')

-- 注意120是一个编码

-- 格式化后的替换 2021/11/28 10:03:38

如开发中使用:CONVERT(NVARCHAR,GETDATE(),23)

这个23就代表转换为yyyy-mm-dd的样式。

    10.转时间戳:SELECT DATEDIFF(SS,'1970-1-1 00:00:00',GETUTCDATE()) 

 

--普通时间转换为时间戳(秒) 1638065333s

 

    11.转时间戳:SELECT DATEADD(SS,1638065460,'1970-1-1 08:00:00')

 

-- 秒时间戳转普通时间 2021-11-28 10:08:53.000

 

12.获取季度: datepart(q,出院日期)=1 – 表示第一个记录

 

但这里的季度 12月底的这段时间算第一季度的

 

3)字符串函数

    1.字符串去空额:LTRIM() 把字符串头部的空格去掉。

 

    2.字符串去空额:RTRIM() 把字符串尾部的空格去掉。

 

    3.字符串提取:SUBSTRING (<expression>, <starting_ position>, length)

 

-- 返回从字符串左边第starting_ position 个字符起length个字符的部分。

 

    4.从左边字符串提取:LEFT (<character_expression>, length)

 

-- 返回character_expression 左起length个字符。 select left('wqetqwetq',3) – wqe

右边的话就right

 

    5.符串拼接方法:select concat('123','456'); -- 注:SQLServer 2012及更高版本才支持conconcat()函数。

 

    6.符串拼接方法:select '123'+'456'; -- 123456

 

    7.字符串json:select JSON_QUERY('{"uid":"asas02234"}', '$.uid');

 

-- 目前看到官网 2016版本有这个方法 目前低版本尚且没有测试是否支持该函数

 

8.SUBSTRING ( '源字符串' , '截取起始位置(含该位置上的字符)' , '截取长度'

 

9.CHARINDEX(tofind,column[,location]),返回的是tofind字符串的第一个字符出现的位置,索引下标从1开始,不包含返回0

 

4)数值转换函数

类型转换

 

select CAST('123' as int) -- 123

 

select CAST('456.7124' as decimal或numeric ) -- 会四舍五入 ,不会出现小数点

 

select CAST ( '12' AS numeric(4,2) ) -- 12.00 保留有效数字  

 

select CAST ( '12' AS numeric(4,2) ) -- 12.00 。小数点后面2,并且总长度要小于4  

 

select CAST('788.4' as decimal(8,5)) --小数点后面5,并且总长度要小于8

 

select round(12.675535,3) -- 3表示,从小数点开始数,有效数字为3位

 

5)判断函数

    1.为空判断:select ISNULL(null,'helloword') -- 返回helloword字符串 判断参数1是否为NULL,

 

如果是,返回参数2,否则返回参数1。

 

    2.条件判断:if(9>10) print '成立' else print '不成立'

 

if Exists( select * from table where … ) print ‘存在数据执行sql’ else print ‘不存在数据执行sql’

 

    3.匹配模式:select name, (CASE 11

 

                                  WHEN '11' THEN '男'

 

                                  WHEN '22' THEN '女'

 

                                  ELSE '其他' end ) as sex from Student

 

    4.搜索模式:select name, (CASE

 

                                  WHEN name='王明' THEN '王一明'

 

                                  WHEN name='李四' THEN '李一四'

 

                                  ELSE '其他' end ) as '改名' from Student

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莳光.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值