1. 程式人生 > >MySQL 函式整理

MySQL 函式整理

此內容摘自"MySQL5.7從入門到精通" 


目錄

1.數學函式 

   1.1 獲得一個數的絕對值

   1.2 圓周率 

   1.3 平方根

   1.4 求餘

   1.5 獲取隨機數

2.字串函式

            2.1. 計算字串的長度

   2.2 合併字串

   2.3 替換字串

   2.4 字母大小寫轉換

   2.5獲取指定長度的字串

   2.6 刪除字串的空格

   2.7 替換指定字串

   2.8 生成n個重複字串

   2.9 比較字串大小

   2.10 字串擷取

   2.11 字串反轉

   2.12 獲取字串使用的編碼

3.日期和時間函式

           3.1 獲得當前日期

  3.2 獲取月份

  3.3 獲取星期

  3.4 獲取天

  3.5 獲取年份,小時,分鐘

  3.6 時間和秒鐘轉換

  3.7 計算日期和時間

4.條件判斷函式

  4.1  IF表示式

  4.2  CASE表示式

5.系統資訊函式

  5.1 獲取mysql版本號

  5.2 獲取mysql伺服器連線次數

  5.3獲取使用者名稱

  5.4獲取最後一個生成的id數

6.加密/解密函式

  6.1 PASSWORD 加密   

  6.2 MD5 加密

  6.3 ENCODE加密/解密

7.其他函式


1.數學函式 

   1.1 獲得一個數的絕對值

       ABS(num) 返回num的絕對值

      

  1.2 圓周率 

     PI() 返回圓周率π的值

      

   1.3 平方根

    SQRT(num) 返回非負數num的平方根

     

  1.4 求餘

     MOD(x,y) 返回x被y除後的餘數

    

  1.5 獲取隨機數

     RAND(X) x 為種子生成隨機數,相同的x隨機數都一樣

     

     RAND() 隨機數

     

2.字串函式

   2.1. 計算字串的長度

       CHAR_LENGTH(str)   返回的是字串str鎖包含的字元個數 

       

       LENGTH(str) 返回的是字串的位元組長度,使用utf8編碼時,一個漢字是三個位元組,一個字母或一個數字算一個位元組

       

   2.2 合併字串

       CONCAT(s1,s2,sn..)  返會結果為s1+s2...+sn 的一條字串,只要有一個字串為Null,最後結果就是Null

       

  2.3 替換字串

         INSERT(s1,x,len,s2)  s1:要被替換(修改)的字串 , x: 從什麼位置開始替換 , len: 替換的長度 , s2: 拿給s1替換的字串,索引(x)從1開始           

        1. 下面意思就是Quest 從第二個位置開始替換4個長度,替換的是What,結果就是 QWhat

        

        2.    -1 低過了Quest的索引,結果直接返回源字串

        

       3. 替換的長度超過了源字串長度,則從第2個開始擷取後面的所有字串

       

2.4 字母大小寫轉換

     LOWER(str) LCASE(str) 都可以把str包含的大寫字母轉為小寫字母

     

     UPPER(str) UCASE(str) 都可以把str包含的小寫字母轉為大寫

     

 2.5獲取指定長度的字串

      LEFT(str,len) 返回str的len長度的字串(從左邊開始)

     

    RIGHT(str,len) 返回str的en長度的字串(從右邊開始)

      

2.6 刪除字串的空格

    TRIM(str) 刪除str兩邊的空格  

     

2.7 替換指定字串

     REPLACE(s,s1,s2)   

     

2.8 生成n個重複字串

    REPEAT(str,num) num指str重複的次數 ,如果num<0 ,則返回空字串,  如果num或者str為null則返回Null

   

   num小於0返回空串 

   

    只要有一個為Null就返回null

   

2.9 比較字串大小

   STRCMP(S1,S2) 如果相等返回0, s1>s2 返回 1  ,s1<s2 返回 -1

   

2.10 字串擷取

  SUBSTRING(str,index,len) str:要被擷取的字串,  index:從什麼地方開始擷取 , len:擷取的長度

     1.把breakfast 從第五個字母開始擷取

    

     2.第五個字母開始擷取.擷取三個長度

    

     3. 擷取後三位長度

    

    4.從倒數第五個位置開始,擷取3位

     

2.11 字串反轉

     REVERSE(str)

     

2.12 獲取字串使用的編碼

     CHARSET() 

     

3.日期和時間函式

   3.1 獲得當前日期

     CURRENT_DATE() , CURDATE()  作用相同 ,都是返回當前日期,格式為 YYYY-MM-DD

     

    CURRENT_TIME() ,CURTIME() 將當前時間以HH:MM:SS 格式返回

     

   CURRENT_TIMESTAMP() , LOCALTIME() ,NOW() , SYSDATE() 返回YYYY-MM-DD HH:MM:SS格式

    

  3.2 獲取月份

    MONTH(date)  返回對應的date月份,範圍值是1-12

    

    MONTHNAME(date) 返回的是對應月份的英文名字

    

 3.3 獲取星期

    DAYNAME(date) 返回當前星期的英文名 

    

    DAYOFWEEK(date) 返回date在一週中的索引(位置)  1:週日 2:週一 3:週二 4:週三....  7:週六

    

     WEEK(date) 返回的是date是一年中的第幾周

    

  3.4 獲取天

     DAYOFYEAR(d) 返回d 是一年中的第幾天 範圍是1-366

     

     DAYOFMONTH(date) 返回date在一個月中的位置

     

  3.5 獲取年份,小時,分鐘

    YEAR(date) 返回date的年份

    

    MINUTE(date) 返回date的分鐘

   

   SECOND(date) 返回date的秒數

   

3.6 時間和秒鐘轉換

 TIME_TO_SEC(time) 將time轉為秒

 

 SEC_TO_TIME(s) 將s轉為分鐘

 

3.7 計算日期和時間

  暫時留白,等我理清了再寫上去

 

4.條件判斷函式

    4.1  IF表示式

    IF(expr , v1 ,v2) 如果表示式(expr)為true ,則返回v1 ,false返回v2 

    

  4.2  CASE表示式

   CASE expre WHEN V1 THEN V11  WHEN V2 THEN V2 ELSE v3 END

   如果expre 等於 某個when後面 則返回對應when的結果

   

5.系統資訊函式

    5.1 獲取mysql版本號

         VERSION()

         

   5.2 獲取mysql伺服器連線次數

       CONNECTION_ID()

       

        SHOW PROCESSLIST;SHOW FULL PROCESSLIST; 檢視當前所有連線

使用另一個cmd連線mysql ,這時候在查詢已經有兩條連線了 

 

 5.3獲取使用者名稱

    USER(),CURRENT_USER(),SYSTEM)USER();  一般情況下這些函式的作用都相同

     root為使用者名稱 localhost為登入的主機名

     

5.4獲取最後一個生成的id數

      LAST_INSERT_ID()

      

6.加密/解密函式

   6.1 PASSWORD 加密   

   PASSWORD(str) 返回加密後的str ,如果str為NULL則返回空串

   

   6.2 MD5 加密

    MD5(str) 為字串算出一個MD5 128位元校驗和,該值已32位十六進位制數字的二進位制字串形式返回,若引數為null,則返回null

   

  6.3 ENCODE加密/解密

    ENCODE(s1,s2)  使用s2加密s1, 

    

    DECODE(S1,S2) 使用s2密碼,解密加密後的s1

    

7.其他函式