7.資料庫函式

zxiaofan發表於2016-01-23
        每個資料庫都會在標準的SQL基礎上擴充套件一些函式。函式一般會有一或多個輸入(即引數),最終只返回一個值作為返回值。
        SQL中的函式是獨立的程式單元。呼叫時無需使用任何類、物件作為呼叫者。

  • 多行函式(也稱 聚集函式、分組函式)
        對多行輸入整體計算,最後只得到一個結果。主要完成一些統計功能,在大部分資料庫中基本相同。
  • 單行函式
        對每行輸入值單獨計算,每行得到一個結果並返回。不同資料庫單行函式差別很大。

MySQL中的單行函式具有如下特徵:
  • 可多個引數,但只返回一個值;
  • 引數可以是變數、常量、資料列;
  • 對每行單獨起作用,每行返回一個結果;
  • 使用單行函式可改變引數的資料型別;
  • 支援巢狀使用(內層函式返回值是外層函式的引數)。
       
MySQL單行函式分類:
        MySQL資料庫的資料型別大致分為數值型、字元型和日期時間型,MySQL提供了對應的函式。
數值函式、字元函式、日期和時間函式、轉換函式、其他函式(位函式、流程控制函式、加密解密函式、資訊函式)


name欄位的長度(輸出行數與表的行數相同)

SELECT

    CHAR_LENGTH(NAME)

FROM student;

 

巢狀使

SELECT SIN(CHAR_LENGTH(NAME))

FROM student;

 

指定日期新增一定的時間

SELECT

    DATE_ADD(

        `2016-02-28`,

        INTERVAL字,後跟一個值和單位

        INTERVAL DAY #輸出20160301

    );

 

更簡便的增加指定時間

SELECT

    ADDDATE(`2015-01-18`,3);

 

SELECT

    # CURTIME(); # 獲取當前時間,17:52:55

    獲取當前日期,如20160119

    CURDATE();

 

MD5加密

SELECT MD5(`hello`);

 

#

#處理NULL的函式

#

SELECT

    IFNULL(id,`expr`) #
id
null,則返回expr

    NULLIF(grade, math) #
grade
math相等則返回null則返回grade

    ISNULL(id) # null則返回0(true)則返回1(false)

FROM student;

 

SELECT

    expr1idtrue、不等於0且不等於null,則返回expr2則返回expr3

    #此處id布林,只要空即true

IF(id,`expr2`,`expr3`)

FROM student;

 

#

case流程控制函式

兩種

#

SELECT

    NAME,

    CASE id

WHEN THEN

    `is
1`

WHEN THEN

    `is
2`

ELSE

    `>2`

END AS `level`

FROM

    student;

 

case語法2更靈

when condition(返回boolean的表示式)

SELECT

    NAME,

    CASE #
id

WHEN id <=THEN

    `small`

WHEN id <10 THEN

    `big`

ELSE

    `null`

END AS `level`

FROM

    student;



相關文章