mysql內置函數


 

mysql數據庫中提供了很豐富的函數。mysql函數包括數學函數、字符串函數、日期和時間函數、條件判斷函數、系統信息函數、加密函數、格式化函數等。通過這些函數,可以簡化用戶的操作。

 

簡單介紹幾類函數的使用範圍:

數學函數:這類函數只要用於處理數字。這類函數包括絕對值函數、正弦函數、餘弦函數、獲取隨機數函數等。

字符串函數:這類函數主要用於處理字符串。其中包括字符串連接函數、字符串比較函數、將字符串的字母變成小寫或大寫字母的函數、獲取子串的函數等。

日期和時間函數:這類函數主要用於處理日期和時間。其中包括取當前時間的函數、獲取當前日期的函數、返回年份的函數、返回日期的函數等。

流程函數:這類函數主要用於在SQL語句中控制條件選擇。其中包括IF語句、CASE語句、WHEN語句等。

系統信息函數:這類函數主要用於獲取mysql數據庫的系統信息。其中包括獲取數據庫名的函數、獲取當前用戶的函數、獲取數據庫版本的函數等。

加密函數:這類函數主要用於對字符串進行加密解密。其中包括字符串加密函數、字符串解密函數等。

其他函數:包括格式化函數、鎖函數等。

 

 

1.數學函數

函數

作用

ABS(x)

返回x的絕對值

CEIL(x),CEILING(x)

返回大於或等於x的最小整數(向上取整)

FLOOR(x)

返回小於或等於x的最大整數(向下取整)

RAND()

返回0~1的隨機數

RAND(x)

返回0~1的隨機數,x值相同時返回的隨機數相同

SIGN(x)

返回x的符號,x是負數、0、正數分別返回-1、0、1

PI()

返回圓周率

TRUNCATE(x,y)

返回數值x保留到小數點後y位的值

ROUND(x)

返回離x最近的整數(四捨五入)

ROUND(x,y)

保留x小數點後y位的值,但截斷時要四捨五入

POW(x,y),POWER(x,y)

返回x的y次方

SQRT(x)

返回x的平方根

EXP(x)

返回e的x次方

MOD(x,y)

返回x 除以y以後的餘數

LOG(x)

返回自然對數(以e爲底的對數)

LOG10(x)

返回以10爲底的對數

RADIANS(x)

講角度轉換爲弧度

DEGREES(x)

講弧度轉換爲角度

SIN(x)

求正弦值

ASIN(x)

求反正弦值

COS(x)

求餘弦值

ACOS(x)

求反餘弦值

TAN(x)

求正切值

ATAN(x),ATAN(x,y)

求反正切值

COT(x)

求餘切值

 

2.字符串函數

函數

作用

CHAR_LENGTH(s)

返回字符串s的字符數

LENGTH(s)

返回字符串s的長度

CONCAT(s1,s2,.....)

將字符串s1,s2等多個字符串合併爲一個字符串

CONCAT_WS(x,s1,s2,....)

同COUCAT(s1,s2,.....),但是每個字符串之間要加上x

INSERT(s1,x,len,s2)

將字符串s2替換s1的x位置開始長度爲len的字符串

UPPER(s),UCASE(s)

講字符串s的所有字符都變成大寫字母

LOWER(s),LCASE(s)

講字符串s的所有字符都變成小寫字母

LEFT(s,n)

返回字符串s的前n個字符

RIGHT(s,n)

返回字符串s的後n個字符

LPAD(s1,len,s2)

字符串s2來填充s1的開始處,使字符串長度達到len

RPAD(s1,len,s2)

字符串s2來填充s1的結尾處,使字符串長度達到len

LTRIM(s)

去掉字符串s開始處的空格

RTRIM(s)

去掉字符串s結尾處的空格

TRIM(s)

去掉字符串s開始處和結尾處的空格

TRIM(s1 FROM s)

去掉字符串s中開始處和結尾處的字符串s1

REPEAT(s,n)

將字符串s重複n次

SPACE(n)

返回n個空格

REPLACE(s,s1,s2)

用字符串s2代替字符串s中的字符串s1

STRCMP(s1,s2)

比較字符串s1和s2

SUBSTRING(s,n,len)

獲取從字符串s中的第n個位置開始長度爲len的字符串

MID(s,n,len)

同SUBSTRING(s,n,len)

ATE(s1,s),POSTTION(s1  IN s)

從字符串s中獲取s1的開始位置

INSTR(s,s1)

從字符串s中獲取s1的開始位置

REVERSE(s)

將字符串s的順序反過來

ELT(n,s1,s2...)

返回第n個字符串

FIELD(s,s1,s2...)

返回第一個與字符串s匹配的字符串的位置

FIND_IN_SET(s1,s2)

返回在字符串s2中與s1匹配的字符串的位置

MAKE_SET(x,s1,s2...)

按x的二進制數從s1,s2......sn中選取字符串

                

3.日期和時間函數

函數

作用

CURDATE(),CURRENT_DATE()

返回當前日期

CURTIME(),CURRENT_TIME()

返回當前時間

NOW(),CURRENT_TIMESTAMP()

LOCALTIME(),SYSDATE()

LOCALTIMESTAMP()

返回當前日期和時間

UNIX_TIMESTAMP()

以UNIX時間戳的形式返回當前時間

UNIX_TIMESTAMP(d)

將時間d以UNIX時間戳的形式返回

FROM_UNIXTIME(d)

把UNIX時間戳的時間轉換爲普通格式的時間

UTC_DATE()

返回UTC(國際協調時間)日期

UTC_TIME()

返回UTC時間

MONTH(d)

返回日期d中的月份值,範圍是1~12

MONTHNAME(d)

返回日期d中的月份名稱,如january

DAYNAME(d)

返回日期d是星期幾,如Monday

DAYOFWEEK(d)

返回日期d是星期幾,1表示星期日,2表示星期2

WEEKDAY(d)

返回日期d是星期幾,0表示星期一,1表示星期2

WEEK(d)

計算日期d是本年的第幾個星期,範圍是0-53

WEEKOFYEAR(d)

計算日期d是本年的第幾個星期,範圍是1-53

DAYOFYEAR(d)

計算日期d是本年的第幾天

DAYOFMONTH(d)

計算日期d是本月的第幾天

YEAR(d)

返回日期d中的年份值

QUARTER(d)

返回日期d是第幾季度,範圍1-4

HOUR(t)

返回時間t中的小時值

MINUTE(t)

返回時間t中的分鐘值

SECOND(t)

返回時間t中的秒鐘值

EXTRACT(type FROM d)

從日期d中獲取指定的值,type指定返回的值,如YEAR,HOUR等

TIME_TO_SEC(t)

將時間t轉換爲秒

SEC_TO_TIME(s)

將以秒爲單位的時間s轉換爲時分秒的格式

TO_DAYS(d)

計算日期d到0000年1月1日的天數

FROM_DAYS(n)

計算從0000年1月1日開始n天后的日期

DATEDIFF(d1,d2)

計算日期d1到d2之間相隔的天數

ADDDATE(d,n)

計算開始日期d加上n天的日期

ADDDATE(d, INTERVAL  expr type)

計算起始日期d加上一個時間段後的日期

SUBDATE(d,n)

                          計算起始日期d減去n天的日期

SUBDATE(d, INTERVAL  expr type)

計算起始日期d減去一個時間段後的日期

ADDTIME(t,n)

計算起始時間t加上n秒的時間

SUBTIME(t,n)

計算起始時間t減去n秒的時間

DATE_FORMAT(d,f)

按照表達式f的要求顯示日期d

TIME_FORMAT(t,f)

按照表達式f的要求顯示時間t

GET_FORMAT(type,s)

根據字符串s獲取type類型數據的顯示格式

 

 

4.條件判斷函數

條件判斷函數用來在SQL語句中進行條件判斷。更加是否滿足判斷條件,SQL語句執行不同的分支。

4.1 IF(expr,v1,v2)函數

IF(expr,v1,v2)函數中,如果表達式expr成立,返回結果v1,否則,返回結果v2。

mysql> selectname,if(price>2,'OK','ON') from food;

+--------------+-----------------------+

| name         | if(price>2,'OK','ON') |

+--------------+-----------------------+

| 光磊餅乾     | OK                    |

| 憲政牛奶     | OK                    |

| 興周果凍     | ON                    |

| GG咖啡       | OK                   |

| XX奶糖       | OK                    |

+--------------+-----------------------+

5 rows in set (0.00sec)

 

4.2CASE函數

CASEWHEN expr1 THEN v1 [WHEN expr2 THEN v2...][ELSE vn] END

mysql> selectname,case when price =1.5 then 'OK' when price >3.5 then 'on my god' endfrom food;

+--------------+---------------------------------------------------------------------+

| name         | case when price =1.5 then 'OK' whenprice >3.5 then 'on my god' end |

+--------------+---------------------------------------------------------------------+

| 光磊餅乾     | NULL                                                               |

| 憲政牛奶     | NULL                                                               |

| 興周果凍     | OK                                                                  |

| GG咖啡       | on my god                                                          |

| XX奶糖       | on my god                                                          |

+--------------+---------------------------------------------------------------------+

5 rows in set (0.00sec)

 

 

5.系統信息函數

系統信息函數用來查詢mysql數據庫的系統信息。例如查詢數據庫的版本,查詢數據的當前用戶等。

函數

作用

VERSION()

返回數據庫的版本號

CONNECTION_ID()

返回服務器的連接數,也就是到現在爲止mysql服務的連接次數

DATABASE(),SCHEMA()

返回當前數據庫名

USER()

返回當前用戶的名稱

CHARSET(str)

返回字符串str的字符集

COLLATION(str)

返回字符串str的字符排列方式

LAST_INSERT_ID()

                         返回最後生成的auto_increment值

 

6.加密解密函數

加密函數是mysql中用來對數據進行加密的函數。

函數

作用

PASSWORD(str)

對字符串str進行加密

MD5(str)

字符串str進行加密

ENCODE(str,pswd_str)

使用字符串pswd_str來加密字符串str,加密結果是一個二進制數,必須使用BLOB類型來保持它

DECODE(crypt_str,pswd_str)

解密函數,使用字符串pswd_str來爲crypt_str解密

 

7.其他函數

函數

作用

FORMAT(x,n)

格式化函數,可以講數字x進行格式化,將x保留到小數點後n位,這個過程需要進行四捨五入。

ASCII(s)

返回字符串s的第一個字符的ASSCII

BIN(x)

返回x的二進制編碼

HEX(x)

返回x的十六進制編碼

OCT(x)

返回x的八進制編碼

CONV(x,f1,f2)

將x從f1進制數變成f2進制數

INET_ATON(IP)

將IP地址轉換爲數字表示,IP值需要加上引號

INET_NTOA(n)

可以將數字n轉換成IP的形式

GET_LOCT(name,time)

加鎖函數,定義一個名稱爲name、持續時間長度爲time秒的鎖,如果鎖定成功,返回1,如果嘗試超時,返回0,如果遇到錯誤,返回NULL.

RELEASE_LOCK(name)

解除名稱爲name的鎖,如果解鎖成功,返回1,如果嘗試超時,返回0,如果解鎖失敗,返回NULL

IS_FREE_LOCK(name)

判斷是否使用名爲name的鎖,如果使用,返回0,否則返回1.

CONVERT(s USING cs)

將字符串s的字符集變成cs

CAST(x AS type),CONVERT(x,type)

這兩個函數將x變成type類型,這兩個函數只對BINARY,CHAR,DATE,DATETIME,TIME,SIGNED  INTEGER,UNSIGNED INTEGER這些類型起作用,但這兩種方法只是改變了輸出值得數據類型,並沒有改變表中字段的類型。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章