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()還是沒發現這兩個函數有什麼區別,都是返回大於等於參數的最小整數。

以上,歡迎各位小夥伴補充和分享。


推薦閱讀:
相關文章