在開發中,數據庫的種類千奇百怪,有各種,比如早期的 SQLServer,MySQL,Oracle,現在還有許多國產的數據庫,但是有不少開發還是使用的 Mysql,但是對于 Mysql 中的各種各樣的函數,用的卻是沒有那么多的,今天了不起就來帶著大家一起看看這個 Mysql 的各種常用的函數。
Mysql 的日期函數
DATE_FORMAT(date,format)
按照指定的格式,格式化日期,我們來使用一下:
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');
一般我們使用的時候,都是經常在條件中使用的這個比如:
where DATE_FORMAT(createTime,'%Y-%m-%d') = '2020-11-11'
而且我們也可以對他進行分組比如:
GROUP BY DATE_FORMAT(createTime,'%H');
這樣的分組條件就是小時,每小時有多少數據,如果是每天,則換成 %d
就可以了
STR_TO_DATE(str,format)
這個則是把我們這個字符串轉為日期
比如下面這樣的:
SELECT STR_TO_DATE('2023-11-21','%Y-%m-%d');
YEAR()
MONTH()
DAY()
SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW())
參數我們傳入日期,最后給我們返回的就是我們想要的年月日的信息。
DAYOFYEAR(date)
這個函數幾乎很少用,是用來表示,當前日期是今年的第幾天
SELECT DAYOFYEAR(NOW());
333
其實在開發過程中,我們用到的日期函數并不會很多,我們用到的關于這個字符串函數,才是最多的。
字符串函數
CHAR_LENGTH(str)
CHARACTER_LENGTH(str)
這兩個函數都是用來返回字符串的字符數的:
select CHAR_LENGTH("hello");
select CHARACTER_LENGTH('hello');
結果:5
CONCAT(str1,str2,...)
CONCAT_WS(separator,str1,str2,...)
第一個就是多個字符串合并成一個字符串,第二個的意思則是,再中間可以拼接一段內容,或者理解為用中間的內容隔開。
這個幾乎是我們經常用的函數,用來做兩個字段的合并等等操作
SELECT CONCAT('hello','world');
helloworld
SELECT CONCAT_WS(',','hello','world');
hello,world
FIELD(str,str1,str2,str3,...)
返回第一個字符串再字符串列表的位置:
SELECT FIELD('x','d','c','x');
3
TRIM(' xxxx ')
這個也是我們在開發的時候經常會用到,但是在數據庫層面其實很少用到,最多的還是在 JAVA 代碼里面去除空格使用,再數據庫中,含義也是一樣的,都是用來去除字符串開始和結尾的空格。
這個時候就有人想問了,如果我只想去掉開頭的,或者只想去掉結尾的空格怎么辦?
LTRIM(str)
RTRIM(str)
第一個是去掉開始的空格,第二個是去掉結尾的空格,這個了不起都不用給大家演示,一個是去掉左邊的,一個是去掉右邊的, 沒有R 沒有L 的 則是兩邊都去掉。
UCASE(str)
UPPER(str)
這兩個函數效果是一樣的,轉換字符串字符為大寫,既然有大寫,那么就勢必會有小寫
LCASE(str)
LOWER(str)
上述兩個方法是吧字符串轉為小寫
**REPLACE() **
將字符串中出現的所有子字符串替換為新的子字符串
REVERSE()
這個函數就比較有意思了,把字符串給翻轉過來,但是這個函數不是屬于常用的函數,了不起實在是想不出什么需求,需要吧這個字符串給你倒過來,難道還想倒背如流?
聚合函數
在MySQL中,聚合函數主要由:count,sum,min,max,avg,這些聚合函數我們之前都學過,不再重復。這里我們學習另外一個函數:group_concat(),該函數用戶實現行的合并。
group_concat()函數首先根據group by指定的列進行分組,并且用分隔符分隔,將同一個分組中的值連接起來,返回一個字符串結果。
group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符'])
注意:
- 使用distinct可以排除重復值;
- 如果需要對結果中的值進行排序,可以使用order by子句;
- separator是一個字符串值,默認為逗號。
數學函數
round(x,保留位數)函數
四舍五入; 當對正數進行四舍五入:按照正常的計算方式,四舍五入即可。當對負數進行四舍五入:先把符號丟到一邊,對去掉負號后的正數進行四舍五入,完成以后,再把這個負號,補上即可。
select round(1.595658,3) as out_put;
ceil(x)函數
向上取整,返回>=該參數的最小整數。求的是大于等于這個數字的最小整數
select ceil(1.9) as out_put;
select ceil(1.1) as out_put;
至于數學函數中的 avg 和 sum 了不起都不用說了,一個平均數,一個求和,