SQL常用函数总结

本篇总结除了sum,if,count,avg这几个实在太常见的以外,小编在实际工作中接触过的其它函数。然后,一如既往地想到哪儿写到哪儿,尽量把差不多的总结到一块儿。

【add_months(),date_add(),date_sub()】

add_months(2017-08-11 17:39:09,1):返回2017-09-11,不带时分秒

date_add(2017-08-11 17:39:09,-31):返回2017-07-11,不带时分秒

date_sub(2017-08-11 17:39:09,31):返回2017-07-11,不带时分秒

三个函数的参数皆可正可负;

date_add()返回指定日期加天数后的日期,date_sub()返回指定日期减天数后的日期,但是由于这个天数的参数可正可负,所以小编暂时还没有找到两个函数作用上的区别点;

add_months()函数返回指定日期加减月份后的日期,没有add_year()和add_week()函数;

【concat(),concat_ws()】

concat(2017,08,11):返回20170811

concat_ws(-,2017,08,11):返回2017-08-11

concat()就是把一堆(不限定参数个数)字元串连起来,concat_ws就是把一堆(也不限定参数个数)字元串用指定字元即第一个参数连起来;

【coalecse()】

select ID ,

coalecse(A_id,B_id,C_id) as ABC_id

结果:

ID ABC_id

1001 1377

1002 74

1003 10978

这个函数就是返回参数中第一个不为空的值,上例出自之前我的一篇叫【sql查询学习随手记-case

when】的文章,实际作用也跟那篇文章里case when的作用差不多,大家可以搜两篇对照参考。

【datediff()】

datediff(2017-08-11, 2017-08-22):返回-11

datediff(2017-08-22, 2017-08-11):返回11

这个函数就是返回两个日期参数相差多少天,也挺常见的一个函数。

【date_format(),to_date()】

date_format(2017-08-11 17:39:09,』%y-%m-%d』):返回2017-08-11

to_date(2017-08-11 17:39:09):返回2017-08-11

这两个函数看起来好像没啥区别的样子,但小编实际用的时候发现date_format()这个函数,至少在hive中不识别,运行会报错没有这个函数,而to_date()在mysql中也不行,至今没找到原因,后续查到再做补充。

【find_in_set(),instr(),locate()】

find_in_set(1, 100045678):返回0

instr(100045678, 1):返回1

locate(1, 100045678):返回1

三个函数都是用来查找字元串中某个字元的位置,从实际作用上来讲~~~小编并没有发现毛线的区别,后续发现了再补充吧。

【substr(),substring()】

substr(100045678,1,2):返回10

substr(100045678,-3,2):返回67

substring(100045678,1,2):返回10

substring(100045678,-3,2):返回67

这两个函数的作用是对第一个参数,从第二个参数位置开始截取,截取长度为第三个参数,返回截取的出来的字元串。依然,没有发现两个函数有毛线区别。

【round(),floor(),ceil(),ceiling()】

round(3.1415926 , 2):返回3.14

floor(3.1415926):返回3

ceil(3.1415926):返回4

ceiling(3.1415926):返回4

round()是四舍五入返回指定几位小数的数值;floor()是返回小数的整数数值;ceil()和ceiling()还是没发现这两个函数有什么区别,都是返回大于等于参数的最小整数。

以上,欢迎各位小伙伴补充和分享。


推荐阅读:
相关文章