MySQL函數簡介 2

6.5 條件判斷函數

條件判斷函數也被稱爲控制流程函數,根據知足的條件的不一樣,執行相應的流程,Mysql中進行條件判斷的有IF,IFNULL,和CASE。

6.5.1 IF(expr,v1,v2)函數

IF(expr,v1,v2)若是表達式expr是true(expr<>0 and expr<>NULL),則IF()的返回值爲v1,不然返回v2。IF()的返回值爲數字或字符串值。
SELECT IF(1>2,2,3),IF(1<2,'YES','NO'),IF(STRCMP('TEST','TEST1'),'NO','YES');

image.png

若是v1或者v2中只有一個明確是NULL,則IF()函數的結果類型爲非NULL表達式結果類型。

6.5.2 IF(v1,v2)函數

IFNULL(v1,v2)加入v1不爲NULL,則IFNULL()的值爲v1,不然返回值爲v2,IFNULL的返回值是數字或者字符串。
SELECT IFNULL(1,2),IFNULL(NULL,10),IFNULL(1/0,'WRONG');

image.png

注意:1/0的結果爲空,所以IFNULL(1/0,'wrong')返回wrong.

6.5.3 CASE函數

CASE expr WHEN v1 THEN[WHEN v2 THEN r2][ELSE rn] END.
該函數表示,若是expr值等於某個vn,則返回對應THEN後面的結果,若是與全部值都不相同則返回ELSE後面的rn。
SELECT
    CASE 5
WHEN 1 THEN
    'one'
WHEN 2 THEN
    'two'
ELSE
    'more'
END;

image.png

CASE後面的值爲2,與第二條分支語句WHEN後面的值相等,所以返回'two'。
SELECT
    CASE
WHEN 1 < 0 THEN
    'true'
ELSE
    'false'
END;

image.png

1<0結果爲false,所以函數返回值爲ELSE後的'false'

6.6 系統信息函數

Mysql中的系統信息有,數據庫的版本號、當前用戶名和鏈接數、系統字符集、最後一個自動生成的ID值。

6.6.1 獲取mysql中的版本號,鏈接數,數據庫名的函數。

SELECT VERSION()

image.png

返回指示mysql服務器版本的字符串,這個字符串使用utf8字符集。
SELECT CONNECTION_ID()

image.png

SHOW PROCESSLIST;

image.png

6.6.2 獲取用戶名的函數

USER(),CURRENT_USER,CURRENT_USER(),SYSTEM_USER()和SESSION_USER()這幾個函數返回當前被mysql服務器驗證的用戶名和主機名組合。通常狀況下這幾個函數返回值是相同的。
SELECT USER(),CURRENT_USER(),SYSTEM_USER();

image.png

6.6.3 獲取字符串的字符集和排序方式的函數

SELECT
CHARSET('abc'),
CHARSET(CONVERT('abc' USING latin1)),
CHARSET(VERSION())

image.png

SELECT
       collation('abc'),
       COLLATION(CONVERT('abc' USING utf8))

image.png

6.6.4 獲取最後一個自動生成的ID值的函數

LAST_INSERT_ID自動返回最後一個INSERT或者UPDATE爲AUTO_INCREMENT列設置的第一個發生的值。
  1. 一次插入一條記錄
INSERT INTO worker VALUES(NULL,'jimy');
INSERT INTO worker VALUES(NULL,'tony');
SELECT LAST_INSERT_ID();

image.png
image.png

  1. 一次同時插入多條
INSERT INTO worker VALUES(NULL,'kevry'),(NULL,'LILI'),(NULL,'miaomiao');

image.png

6.7 加密函數

6.7.1 加密函數PASSWORD(str)

6.7.2 加密函數MD5(str)

6.7.3 加密函數ENCODE(str,pswd_str)

6.7.4 解密函數DECODE(crypt_str,pswd_str)

相關文章
相關標籤/搜索