【數據庫】MySql常用函數梳理


轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/5866388.html 

MySql常用函數梳理:

1:數學函數

使用格式:一般用於插入、修改語句中,直接 函數(參數) 即可,把返回結果用於插入、修改。

RAND():隨機數生成。區別在於,RAND()返回的數是完全隨機的,而RAND(x)在x相同時返回的值相同

ROUND(X,Y):得到X的Y位四舍五入小數。

LOG(x,y):得到以x為底,y的對數。

SQRT(x):得到x的平方根。

MOD(x,y):x對y求余。
CEIL(x)、CEILING(x):向上取整。
FLOOR(x):向下取整。

ROUND(x):返回離x最近的整數,也就是對x進行四舍五入處理

SIGN(x)返回x的符號,-1為負數,0不變,1為正數

POW(x,y)、POWER(x,y):冪運算,求x的y次方冪。

應用實例:

insert into test values (RAND(0),ROUND(4.5462,3),LOG(2,8),SQRT(9));
select * from test;

結果:

0,4.54600000000000000000000000000,3.0000000000000000000000000000000,3.0000000000000000000000000000000

 

2:聚集函數

使用格式:聚集函數一般是配合GROUP BY語句使用的,也可以用於統計整表、整列。

SQL聚集函數
函數 說明
AVG() 返回某列的平均值
COUNT() 返回某列/某組/整表的行數(即記錄數)
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某個列之和

樣例:

select COUNT(*)  from test GROUP BY id;

select AVG(grade) from student;

select MAX(grade) from student;

select MIN(grade) from student;

select SUM(grade) from student;

 

3:字符串函數

字符串函數的使用格式:select 函數(參數) from 表;

CONCAT(str1,str2,...) :返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL。

 

ASCII(str):返回字符串str 的最左字符的數值。假如str為空字符串,則返回值為 0 。假如str 為NULL,則返回值為 NULL。 ASCII()用於帶有從 0到255的數值的字符。 

BIN(N):返回N的二進制值的字符串。

CHAR_LENGTH(str):返回值為字符串str 的長度,長度的單位為字符。

CONV(str,from_base,to_base):不同進制的轉換。返回str字符串由from_base進制轉化為 to_base 進制的數字串表示。

 ELT(N,str1,str2,str3,...):返回第一個參數后面的第N個參數。返回若N = 1,則返回值為  str1 ,若N = 2,則返回值為 str2 ,以此類推。

FIELD(str,str1,str2,str3,...):返回str1, str2, str3,……列表中的str 的個數。在找不到str 的情況下,返回值為 0 。

FIND_IN_SET(str,strlist):假如字符串str 在字符串列表strlist 中, 則返回其在列表中的位置。一個字符串列表就是一個由一些被‘,’符號分開的自鏈組成的字符串。

 FORMAT(X,D):將number X設置為格式 '#,###,###.##', 以四舍五入的方式保留到小數點后D位, 而返回結果為一個字符串。

INSERT(str,pos,len,newstr):字符串 str的pos到len長的位置被newstr替換。

INSTR(str,substr):返回字符串 str 中子字符串substr的第一個出現位置。

POSITION(substr IN str):返回子串substr在字符串str第一個出現的位置,如果substr不是在str里面,返回0。

LOCATE(substr,str,pos)返回子串substr在字符串str第一個出現的位置,從位置pos開始。如果substr不是在str里面,返回0。

 LEFT(str,len):返回字符串str 從左起len長的子串。

 RIGHT(str,len):從字符串str 開始,返回最右len 字符。

LENGTH(str):返回值為字符串str 的長度,單位為字節。

LOWER(str):把str全部變為小寫。

 REPEAT(str,count):str重復count次而成的新字符串。

REPLACE(str,from_str,to_str):把str中的from_str內容替換為to_str.

 REVERSE(str):把str倒序。

RPAD(str,len,padstr):把str用padstr填充到len長。

SUBSTRING(str,pos) , SUBSTRING(str FROM pos):字符串str返回一個子字符串,起始於位置 pos。

SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len):字符串str返回一個長度同len字符相同的子字符串,起始於位置 pos。 

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) ,TRIM(remstr FROM str):從str中刪除remstr。

UPPER(str):把str轉為大寫。

 

4:日期和時間函數

NOW():返回該條語句【注意,是該條語句,而不是該函數。區別在於下面的sysdate()函數】運行時的具體日期時間。

eg:select NOW();

re:2016-09-12 21:25:06

sysdate(): 日期時間函數跟 now() 類似,不同之處在於:now() 在語句執行開始時值就得到了, sysdate() 在函數執行時動態得到值。

mysql> select now(), sleep(3), now();

+---------------------+----------+---------------------+
| now()               | sleep(3) | now()               |
+---------------------+----------+---------------------+
| 2008-08-08 22:28:21 |        0 | 2008-08-08 22:28:21 |
+---------------------+----------+---------------------+

mysql> select sysdate(), sleep(3), sysdate();

+---------------------+----------+---------------------+
| sysdate()           | sleep(3) | sysdate()           |
+---------------------+----------+---------------------+
| 2008-08-08 22:28:41 |        0 | 2008-08-08 22:28:44 |
+---------------------+----------+---------------------+

可以看到,雖然中途 sleep 3 秒,但 now() 函數兩次的時間值是相同的; sysdate() 函數兩次得到的時間值相差 3 秒。

 

curdate():獲取當前日期。

curtime():獲得當前時間(time)函數。

時間選取函數:

選取日期時間的各個部分:日期、時間、年、季度、月、日、小時、分鍾、秒、微秒

set @dt = '2008-09-10 07:15:30.123456';

select date(@dt);        -- 2008-09-10
select time(@dt);        -- 07:15:30.123456
select year(@dt);        -- 2008
select quarter(@dt);     -- 3
select month(@dt);       -- 9
select week(@dt);        -- 36
select day(@dt);         -- 10
select hour(@dt);        -- 7
select minute(@dt);      -- 15
select second(@dt);      -- 30
select microsecond(@dt); -- 123456

dayname(), monthname(): 返回星期和月份名稱。
select dayname(@dt);     -- Friday
select monthname(@dt);   -- August:

WEEKDAY(date) :返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

DAYOFMONTH(date) :返回date的月份中日期,在1到31范圍內。

DAYOFYEAR(date) :返回date在一年中的日數, 在1到366范圍內。 

MONTH(date) :返回date的月份,范圍1到12。 

DAYNAME(date) :返回date的星期名字,比如:Friday。

MONTHNAME(date) :返回date的月份名字。 

QUARTER(date) :返回date一年中的季度,范圍1到4。 

 

5:加密解密函數

ENCODE(,)   DECODE(,):加密解密字符串。該函數有兩個參數:被加密或解密的字符串和作為加密或解密基礎的密鑰。Encode結果是一個二進制字符串,以BLOB類型存儲。

加密 INSERT INTO users (username, password) VALUES ('joe', ENCODE('guessme', 'abracadabra'));

解密 SELECT DECODE(password, 'abracadabra') FROM users WHERE username='joe';


MD5():計算字符串的MD5校驗和(128位)。

SHA5():計算字符串的SHA5校驗和(160位)

 

6:格式化函數

FORMAT(x,y) :把x格式化以逗號分隔開的數字序列,y是結果的小數位數。同時,結果會以 , 每3位數進行分割,像金額表達一樣。

DATE_FORMAT(date,fmt) 和TIME_FORMAT(time,fmt)函數可以用來格式化日期和時間值:這倆函數接受日期或者時間值和一個指定結果格式的格式化字符串。這個格式化字符串包含特殊的符號。不同的符號表示不同的內容,字符串就是一系列自選的符號組成,這樣日期或時間就會按照字符串表示的格式表達出來。

說明符 說明
%a 工作日的縮寫名稱  (Sun..Sat)
%b 月份的縮寫名稱 (Jan..Dec)
%c 月份,數字形式(0..12)
%D 帶有英語后綴的該月日期 (0th, 1st, 2nd, 3rd, …)
%d 該月日期, 數字形式 (00..31)
%e 該月日期, 數字形式(0..31)
%f 微秒 (000000..999999)
%H 小時(00..23)
%h 小時(01..12)
%I 小時 (01..12)
%i 分鍾,數字形式 (00..59)
%j 一年中的天數 (001..366)
%k 小時 (0..23)
%l 小時 (1..12)
%M 月份名稱 (January..December)
%m 月份, 數字形式 (00..12)
%p 上午(AM)或下午( PM)
%r 時間 , 12小時制 (小時hh:分鍾mm:秒數ss 后加 AM或PM)
%S 秒 (00..59)
%s 秒 (00..59)
%T 時間 , 24小時制 (小時hh:分鍾mm:秒數ss)
%U 周 (00..53), 其中周日為每周的第一天
%u 周 (00..53), 其中周一為每周的第一天
%V 周 (01..53), 其中周日為每周的第一天 ; 和 %X同時使用
%v 周 (01..53), 其中周一為每周的第一天 ; 和 %x同時使用
%W 工作日名稱 (周日..周六)
%w 一周中的每日 (0=周日..6=周六)
%X 該周的年份,其中周日為每周的第一天, 數字形式,4位數;和%V同時使用
%x 該周的年份,其中周一為每周的第一天, 數字形式,4位數;和%v同時使用
%Y 年份, 數字形式,4位數
%y 年份, 數字形式 (2位數)
%% ‘%’文字字符

7:類型轉換函數

CAST() 和CONVERT() 函數可用來獲取一個類型的值,並產生另一個類型的值。 

格式:CAST(xxx  AS   類型)  ,   CONVERT(xxx,類型)

類型 可以是以下值其中的 一個: 
二進制 : BINARY    
字符型,可帶參數 : CHAR()     
日期 : DATE     
時間: TIME     
日 期時間型 : DATETIME     
浮點數 : DECIMAL      
整數 : SIGNED     
無符號整數 : UNSIGNED 

 

8:系統信息函數

使用格式:select 函數();

VERSION():返回數據庫版本號。
CONNECTION_ID():返回數據庫的連接次數.
DATABASE()、SCHEMA():返回當前數據庫名
USER()、SYSTEM_USER()、SESSION_USER(),CURRENT_USER()、CURRENT_USER:返回當前用戶名
CHARSET(str):返回字符串str的字符集(編碼格式)
LAST_INSERT_ID() :返回最近生成的AUTO_INCREMENT值.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM