mysql常用函數實例總結【聚集函數、字符串、數值、時間日期處理等】
本文實例講述了mysql常用函數。分享給大家供大家參考,具體如下:
本文內容: mysql函數的介紹 聚集函數 avg count max min sum 用于處理字符串的函數 合并字符串函數:concat(str1,str2,str3…) 比較字符串大小函數:strcmp(str1,str2) 獲取字符串字節數函數:length(str) 獲取字符串字符數函數:char_length(str) 字母大小寫轉換函數:大寫:upper(x),ucase(x);小寫lower(x),lcase(x) 字符串查找函數 獲取指定位置的子串 字符串去空函數 字符串替換函數: 用于處理數值的函數 絕對值函數:abs(x) 向上取整函數:ceil(x) 向下取整函數:floor(x) 取模函數:mod(x,y) 隨機數函數:rand() 四舍五入函數:round(x,y) 數值截取函數:truncate(x,y) 用于處理時間日期的函數 獲取當前日期:curdate(),current_date() 獲取當前時間:curtime(),current_time() 獲取當前日期時間:now() 從日期中選擇出月份數:month(date),monthname(date) 從日期中選擇出周數:week(date) 從日期中選擇出周數:year(date) 從時間中選擇出小時數:hour(time) 從時間中選擇出分鐘數:minute(time) 從時間中選擇出今天是周幾:weekday(date),dayname(date)首發日期:2018-04-14
mysql函數的介紹: 為了簡化操作,mysql提供了大量的函數給程序員使用(比如你想輸入當前時間,可以調用now()函數) 函數可以出現的位置:插入語句的values()中,更新語句中,刪除語句中,查詢語句及其子句中。聚集函數: 聚集函數用于匯集記錄(比如不想知道每條學生記錄的確切信息,只想知道學生記錄數量,可以使用count())。 聚集函數就是用來處理“匯集數據”的,不要求了解詳細的記錄信息。 聚集函數(aggregate function) 運行在行組上,計算和返回單個值的函數。實驗表數據(下面的運行數據基于這個表):
create table student(name varchar(15),gender varchar(15),age int);insert into student values('lilei','male',18);insert into student values('alex','male',17);insert into student values('jack','male',20);insert into student values('john','male',19);insert into student values('nullpeople','male',null);avg(字段)函數: 返回指定字段的數據的平均值 avg() 通過對表中行數計數并計算指定字段的數據總和,求得該字段的平均值。 avg() 函數忽略列值為 NULL 的行,如果某行指定字段為null,那么不算這一行。count(字段)函數: 返回指定字段的數據的行數(記錄的數量) 字段可以為'*',為*時代表所有記錄數,與字段數不同的時,記錄數包括某些字段為null的記錄,而字段數不包括為null的記錄。
max(字段)函數: 返回指定字段的數據的最大值
如果指定字段的數據類型為字符串類型,先按字符串比較,然后返回最大值。 max() 函數忽略列值為 null的行min(字段)函數: 返回指定字段的數據的最小值
如果指定字段的數據類型為字符串類型,先按字符串比較,然后返回最小值。 min()函數忽略列值為 null的行sum(字段)函數: 返回指定字段的數據之和
sum()函數忽略列值為 null的行補充: 聚集函數的字段如果的數據為null,則忽略值為null的記錄。 比如avg:有5行,但是只有四行的年齡數據,計算結果只算四行的, 但是如果不針對字段,那么會計算,比如count(x)是計算記錄數的,null值不影響結果。 還有一些標準偏差聚集函數,這里不講述,想了解更多的可以百度。 聚集函數在5.0+版本上還有一個選項DISTINCT,與select中類似,就是忽視同樣的字段。【不可用于count(x)】
用于處理字符串的函數:合并字符串函數:concat(str1,str2,str3…) 用于將多個字符串合并成一個字符串,如果傳入的值中有null,那么最終結果是null 如果想要在多個字符串合并結果中將每個字符串都分隔一下,可以使用concat_ws(分隔符,str1,str2,str3…),如果傳入的分隔符為null,那么最終結果是null(不過這時候如果str有為null不影響結果)
比較字符串大小函數:strcmp(str1,str2) 用于比較兩個字符串的大小。左大于右時返回1,左等于右時返回0,,左小于于右時返回-1, strcmp類似編程語言中的比較字符串函數(依據ascll碼?),會從左到右逐個比較,直到有一個不等就返回結果,否則比較到結尾。
獲取字符串字節數函數:length(str) 用于獲取字符串字節長度(返回字節數,因此要注意字符集)
獲取字符串字符數函數:char_length(str) 用于獲取字符串長度
字母大小寫轉換函數:大寫:upper(x),ucase(x);小寫lower(x),lcase(x) upper(x),ucase(x)用于將字母轉成大寫,x可以是單個字母也可以是字符串
lower(x),lcase(x)用于將字母轉成小寫,x可以是單個字母也可以是字符串
對于已經是了的,不會進行大小寫轉換。字符串查找函數: find_in_set(str1,str2) 返回字符串str1在str2中的位置,str2包含若干個以逗號分隔的字符串(可以把str2看出一個列表,元素是多個字符串,查找結果是str1在str2這個列表中的索引位置,從1開始)
field(str,str1,str2,str3…) 與find_in_set類似,但str2由一個類似列表的字符串變成了多個字符串,返回str在str1,str2,str3…中的位置。
locate(str1,str2): 返回子串str1在字符串str2中的位置
position(str1 IN str2) 返回子串str1在字符串str2中的位置
instr(str1,str2) 返回子串str2在字符串str1中的位置【注意這里調轉了】
獲取指定位置的子串: elt(index,str1,str2,str3…) 返回指定index位置的字符串
left(str,n) 截取str左邊n個字符
right(str,n) 截取str右邊n個字符
substring(str,index,len) 從str的index位置截取len個字符
字符串去空函數: ltrim(str): 去除字符串str左邊的空格
rtrim(str) 去除字符串str右邊的空格
trim() 去除字符串str兩邊的空格
字符串替換函數: insert(str1,index,len,str2) 使用str2從str1的index位置替換str1的len個元素
replace(str,str1,str2) 將str中的子串str1全部替換成str2
用于處理數值的函數:絕對值函數:abs(x) 返回x的絕對值向上取整函數:ceil(x) 返回x的向上取整的整數向下取整函數:floor(x) 返回x的向下取整的整數取模函數:mod(x,y) 返回x mod y的結果隨機數函數:rand() 返回0-1內的隨機數 如果想對某種情況都使用同一隨機值,可以使用rand(x),x相同時返回同樣的隨機結果。
四舍五入函數:round(x,y) 返回數值x帶有y為小數結果的數值(四舍五入)
數值截取函數:truncate(x,y) 返回數值x截取y位小數的結果(不四舍五入)
用于處理時間日期的函數:獲取當前日期:curdate(),current_date() 返回格式為:
獲取當前時間:curtime(),current_time() 返回格式為:
獲取當前日期時間:now() 返回格式為:
從日期中選擇出月份數:month(date),monthname(date)
從日期中選擇出周數:week(date) 返回格式為:
從日期中選擇出周數:year(date) 返回格式為:
從時間中選擇出小時數:hour(time) 返回格式為:
從時間中選擇出分鐘數:minute(time) 返回格式為:
從時間中選擇出今天是周幾:weekday(date),dayname(date) 返回格式為:
日期函數還是比較常用的,想了解更多,可以參考官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
想了解更多函數,可以參考官方文檔(下面的是5.7的):
https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數據庫鎖相關技巧匯總》
希望本文所述對大家MySQL數據庫計有所幫助。
相關文章: