mysql常用函數(shù)怎么用 mysql怎么調(diào)用函數(shù)
MySQL字符串處理函數(shù)的幾種常見用法
方法/步驟
湘東網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),湘東網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為湘東上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的湘東做網(wǎng)站的公司定做!
首先,計(jì)算字符串的字符數(shù),可以用char_length()函數(shù),代碼如下:
select 'zhangsan',char_length('zhangsan');
如下圖所示:
字符串中的length()函數(shù),用來計(jì)算字符串的長度,代碼如下:
select 'zhangsan',length('zhangsan1111');
如下圖所示:
字符串函數(shù)中有時(shí)需要將幾個(gè)不同的字符串拼接在一起,這時(shí)可以利用concat(a1,a2,...)和concat_ws(b,b1,b2,...),可以將各字符串合并成一個(gè)字符串,代碼如下:
select concat('zhang','san','feng');
select concat_ws('*','zhang','san','feng');
mysql包含次數(shù)函數(shù)
函數(shù)concat。distinct是mysql中去重最常用的方法,有自己的局限性。是統(tǒng)計(jì)的是每條數(shù)據(jù)重復(fù)的次數(shù)拼接函數(shù)concat個(gè)函數(shù)較簡單的。多項(xiàng)式的次數(shù)是指次數(shù)最高的項(xiàng)的次數(shù)。單項(xiàng)式的次數(shù)是指單項(xiàng)式所有字母。
MySQL實(shí)現(xiàn)常用分析函數(shù)
分別在 MySQL5.7.25-log 和 8.0.16 環(huán)境中實(shí)現(xiàn)類似Oracle的分析函數(shù)(8.0版本中已支持,直接使用即可)。
一、創(chuàng)建測試數(shù)據(jù)
二、row_number() over()
三、rank() over()
四、dense_rank() over()
五、lag() over()
六、lead() over()
七、待補(bǔ)充
例1:不分組,全部數(shù)據(jù)添加序列號(hào),類Oracle 的rownum偽列
例2:先按roomid分組,再按照deviceid,counter排序,類Oracle 的row_number() OVER(PARTITION BY ORDER BY )
例1:不分組,全部數(shù)據(jù)按 roomid 排序,再添加序號(hào),類Oracle 的rank() OVER(ORDER BY)
例2:先按roomid分組,再按deviceid排序,類Oracle 的rank() OVER(PARTITION BY ORDER BY)
例1:不分組,全部數(shù)據(jù)按roomid排序,再添加序號(hào),類Oracle 的dense_rank() OVER(ORDER BY)
例2:先按roomid分組,再按deviceid排序,類Oracle 的dense_rank() OVER(PARTITION BY ORDER BY)
例1:不分組,全部數(shù)據(jù)按roomid,deviceid升序排序,類Oracle 的lag() OVER(ORDER BY)
例2:先按roomid分組,再按roomid,deviceid排序,類Oracle 的lag() OVER(PARTITION BY ORDER BY)
例1:不分組,全部數(shù)據(jù)按roomid,deviceid,counter升序排序,類Oracle 的lead() OVER(ORDER BY)
例2:先按roomid分組,再按deviceid,counter排序,類Oracle 的lead() OVER(PARTITION BY ORDER BY)
直觀理解:MySQL常用窗口函數(shù)
??窗口函數(shù)(window functions),也叫分析函數(shù)和OLAP函數(shù),MySQL在8.0之后開始支持窗口函數(shù)。窗口函數(shù)可以用來對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)分析處理,和group by有類似之處,其區(qū)別在于窗口會(huì)對(duì)每個(gè)分組之后的數(shù)據(jù)按行進(jìn)行分別操作,而group by一般對(duì)分組之后的函數(shù)使用聚合函數(shù)匯總,做不到對(duì)不同的group中的行數(shù)據(jù)進(jìn)行分別操作。這就簡單介紹幾種常見的MySQL窗口函數(shù)。下表中列出了幾種常見的窗口函數(shù),并對(duì)其基本功能進(jìn)行了描述。接下來我們會(huì)以一段示例,來展示MySQL中窗口函數(shù)的用途和效果。
??假設(shè)我們存在一張如下的員工工資表,接下來我們將以這張表對(duì)窗口函數(shù)的使用方法進(jìn)行簡單的演示。
??窗口函數(shù)的語法如下,所有的窗口函數(shù)均遵循以下語法:
其中 frame_clause 語法如下。
接下來我們將展示一些場景的窗口函數(shù)的用法和效果。
示例: 對(duì)所有員工按照薪資降序排序,并給出對(duì)應(yīng)的row_number、rank和dense_rank的排名
示例: 對(duì)每個(gè)部門的員工按照薪資降序排序,并給出對(duì)應(yīng)的row_number、rank和dense_rank的排名
示例: 對(duì)所有員工按照薪資降序排序,并給出對(duì)應(yīng)的row_number、rank和dense_rank的排名,最終結(jié)果按照員工號(hào)進(jìn)行排序輸出。
示例: 找出每個(gè)部門工資最高的人。
示例: a.將所有員工按照工資遞增的順序分成4組。b.根據(jù)員工入職日期升序分成7組。
示例: 獲取每個(gè)部門,按工資從低到高得累計(jì)和。
示例: 獲取每個(gè)部門得工資累計(jì)和。
示例: 獲取整個(gè)公司的薪資按照薪資遞增的累計(jì)和。
示例: 獲取整個(gè)公司的薪資按照薪資遞增的前兩行和后一行范圍內(nèi)的薪資和。
示例: 每個(gè)部門的平均工資。
示例: 獲取整個(gè)公司的薪資按照薪資遞增的前兩行和后一行范圍內(nèi)的薪資平均值。
示例: 根據(jù)薪資排序,獲取CUME_DIST()和PERCENT_RANK()
示例: a. 獲取每個(gè)人入職前一行的數(shù)據(jù),默認(rèn)值為"2021-01-01";b. 獲取每個(gè)人入職前兩行的數(shù)據(jù),不設(shè)置默認(rèn)值;c. 獲取每個(gè)人入職后一行的數(shù)據(jù),默認(rèn)值為"2022-01-01";d. 獲取每個(gè)人入職后兩行的數(shù)據(jù),不設(shè)置默認(rèn)值;
示例: a. 按照入職日期順序排序,找出當(dāng)前每個(gè)部門最先入職的人的薪資。b. 按照入職日期順序排序,找出當(dāng)前每個(gè)部門最后入職的人的薪資。
示例: a.獲取截至當(dāng)前工資第二高的人的工資。b.獲取第二個(gè)入職的人的工資。
db2數(shù)據(jù)庫常用函數(shù)
1、value函數(shù)
用法:select value(id,'') from merchant ;
如果id為空,返回空,如果id不為空,返回id的值;
2、nvl函數(shù)
用法:select nvl(id,'') from merchant ;
如果id為空,返回空,如果id不為空,返回id的值;
3、substr函數(shù)
用法:select substr(src_ip,1,2) from tbl_sybvclear_txn;
從src_ip第一位開始,取兩位;
4、length函數(shù)
用法:select length(src_ip) from tbl_sybvclear_txn;
計(jì)算字符串的長度,不必贅述;
5、ltrim函數(shù),rtrim函數(shù)
用法:去掉左側(cè),右側(cè)的空格;
6、letf函數(shù),right函數(shù)
用法:select left(src_ip,3),right(src_ip,3) from tbl_sybvclear_txn;
取src_ip左邊3個(gè),右邊3個(gè)字符串;
7、concat函數(shù)
用法:select concat(src_ip,chl_resp) from tbl_sybvclear_txn;
字符串連接,mysql支持三個(gè)以上參數(shù),db2只支持兩個(gè)參數(shù);
8、replace函數(shù)
用法:select src_ip,replace(src_ip,'223','55') from tbl_sybvclear_txn;
把src_ip中223全部替換成55;
9、to_char函數(shù),to_date函數(shù),to_timestamp函數(shù)
用法:將數(shù)值型轉(zhuǎn)成字符型
10、avg函數(shù)
用法:select avg(mcht_fee) from tbl_sybvclear_txn;
返回mcht_fee平均值;
11、count函數(shù)
用法:太常用,不贅述;
12、sum函數(shù)
用法:太常用,不贅述;
13、max函數(shù),min函數(shù)
用法:取某列的最大值,最小值;
本文標(biāo)題:mysql常用函數(shù)怎么用 mysql怎么調(diào)用函數(shù)
網(wǎng)頁鏈接:http://www.xueling.net.cn/article/hgsoid.html