SQL常用函數總結
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()還是沒發現這兩個函數有什麼區別,都是返回大於等於參數的最小整數。
以上,歡迎各位小夥伴補充和分享。
推薦閱讀: