盤點MySQL中比較實用的函式

2022-05-17 15:51:46 字數 2673 閱讀 4765

之前小編在工作中遇到一些處理資料的問題,例如完成日期格式化,獲取幾天後的時間,生成指定格式的編碼等問題,這時候小編經常會寫一大堆邏輯**來進行處理,還自己感覺自己很流弊的樣子,後來卻發現同事遇到相同的問題並沒有寫一大堆邏輯**,好奇心下促使我偷偷的看了下同事的**,才明白他們很喜歡使用sql中的函式直接處理了,大大減少了**量,於是小編決定加強這方面的知識,多積累多看,把比較實用的一些sql函式列舉出來,望指點一下。

no1: datediff函式

datediff函式返回兩個日期之間的天數

語法:datediff(date1,date2)

select datediff('2018-07-01','2018-07-04');

執行結果:-3

所以,datediff函式對時間差值的計算方式為date1-date2的差值。

no2: timestampdiff函式

timestampdiff函式日期或日期時間表示式之間的整數差。

語法:timestampdiff(interval,datetime1,datetime2),比較的單位interval可以為以下數值

frac_second。表示間隔是毫秒

second。秒

minute。分鐘

hour。小時

day。天

week。星期

month。月

quarter。季度

year。年

select timestampdiff(day,'2018-07-01 09:00:00','2018-07-04 12:00:00');

執行結果:3

所以,timestampdiff函式對日期差值的計算方式為datetime2-datetime1的差值。

請注意:datediff,timestampdiff對日期差值的計算方式剛好是相反的

no3:concat()函式

1、功能:將多個字串連線成乙個字串。

2、語法:concat(str1, str2,...)  

返回結果為連線引數產生的字串,如果有任何乙個引數為null,則返回值為null。

3、語法:concat(str1, seperator,str2,seperator,...)

返回結果為連線引數產生的字串並且有分隔符,如果有任何乙個引數為null,則返回值為null。

no4: concat_ws()函式

1、功能:和concat()一樣,將多個字串連線成乙個字串,但是可以一次性指定分隔符(concat_ws就是concat with separator)

2、語法:concat_ws(separator, str1, str2, ...)

說明:第乙個引數指定分隔符。需要注意的是分隔符不能為null,如果為null,則返回結果為null。

no5: group_concat()函式

1、功能:將group by產生的同乙個分組中的值連線起來,返回乙個字串結果。

2、語法:group_concat( [distinct] 要連線的字段 [order by 排序字段 asc/desc  ] [separator '分隔符'] )

說明:通過使用distinct可以排除重複值;如果希望對結果中的值進行排序,可以使用order by子句;separator是乙個字串值,預設為乙個逗號。

no6:char_length(s)函式

1.功能:返回字串 s 的字元數

2.語法:

返回字串 runoob 的字元數

select char_length("runoob")as lengthofstring;

no7:field(s,s1,s2...)函式

1.功能:返回第乙個字串 s 在字串列表(s1,s2...)中的位置

2.語法:返回字串 c 在列表值中的位置:

select field("c","a","b","c","d","e");

no8:find_in_set(s1,s2)函式

1.功能:返回在字串s2中與s1匹配的字串的位置

2.語法:

返回字串 c 在指定字串中的位置:

select find_in_set("c","a,b,c,d,e");

no9:format(x,n)函式

1.功能:函式可以將數字 x 進行格式化 "#,###.##", 將 x 保留到小數點後 n 位,最後一位四捨五入。

2.語法:

格式化數字 "#,###.##" 形式:

select format(250500.5634,2);--輸出250,500.56

no10:left(s,n)函式

1.功能:返回字串 s 的前 n 個字元

2.語法:

返回字串 runoob 中的前兩個字元:

select left('runoob',2)--ru

no11:mid(s,n,len)函式

1.功能:從字串 s 的 n 位置擷取長度為 len 的子字串,同 substring(s,n,len)

2.語法:

從字串 runoob 中的第 2 個位置擷取 3個 字元:

select mid("runoob",2,3)as extractstring;--uno

oracle中比較實用sql語句

檢視oracle 資料庫中本使用者下的所有表 select table name from user tables 檢視oracle 資料庫中所有使用者下的所有表 select user,table name from all tables 檢視oracle 資料庫中本使用者下的所有列 select...

css中比較實用的flex布局(1)

為什麼要用flex模型?布局的傳統解決方案,基於 盒狀模型 依賴 display屬性 position屬性 float屬性。它對於那些特殊布局非常不方便,比如,垂直居中 就不容易實現。正如上所說,flex布局在某些方面可以大大減輕複雜度,並且在一些比較難的布局中,運用起來十分方便。那麼現在問題來了,...

排序演算法中比較函式的運用

假如我們有乙個 如下,1,5 2,3 3,7 需要根據第二例排序。我們應該怎麼辦呢?這裡使用python作為範例,其他語言提供類似的泛型程式設計方法。對這個資料排序可以寫出如下 def customcmp a,b return cmp a 1 b 1 mylist a 1,5 b 2,3 c 3,7...