當前位置 主頁 > 服務器問題 > win服務器問題匯總 > 最大化 縮小

    MySQL流程函數常見用法實例分析

    欄目:win服務器問題匯總 時間:2019-12-31 01:17

    本文實例講述了MySQL流程函數常見用法。分享給大家供大家參考,具體如下:

    流程函數是MySQL相對常用的一類函數, 用戶可以使用這類函數在一個SQL語句中實現條件選擇, 這樣能夠提高效率.

    下面列出了MySQL跟條件有關的流程函數

    函數 功能
    IF(expr1,expr2,expr3) 如果expr1是真, 返回expr2, 否則返回expr3
    IFNULL(expr1,expr2) 如果expr1不是NULL,返回expr1,否則返回expr2
    CASE WHEN [value1] THEN[result1]… ELSE[default] END 如果value是真, 返回result1,否則返回default
    CASE [expr] WHEN [value1] THEN[result1]… ELSE[default] END 如果expr等于value1, 返回result1,否則返回default

    下面的例子中模擬對職員進行分類,首先創建一個職員薪水表:

    create table salary(userid int, salary decimal(9,2));
    
    

    插入一些測試數據

    insert into salary values (1,1000),(2,2000),(3,3000),(4,4000),(5,5000),(1,null);
    
    

    數據如下

    mysql> select * from salary;
    +--------+---------+
    | userid | salary |
    +--------+---------+
    | 1 | 1000.00 |
    | 2 | 2000.00 |
    | 3 | 3000.00 |
    | 4 | 4000.00 |
    | 5 | 5000.00 |
    | 1 | NULL |
    +--------+---------+
    6 rows in set (0.00 sec)
    
    

    接下來, 通過這個表來介紹各個函數的應用.

    IF(expr1,expr2,expr3)函數: 這里認為月薪在2000元以上的職員屬于高薪, 用"high'表示; 而2000以下的職員屬于低薪, 用'low'來表示.

    mysql> select if(salary>2000, 'high', 'low') from salary;    
    +--------------------------------+
    | if(salary>2000, 'high', 'low') |
    +--------------------------------+
    | low              |
    | low              |
    | high              |
    | high              |
    | high              |
    | low              |
    +--------------------------------+
    6 rows in set (0.00 sec)
    
    

    IFNULL(expr1,expr2)函數: 這個函數一般用來替換NULL值, 我們知道NULL值是不能參參與數值運算的, 下面這個語句就是把NULL值用0替換.

    mysql> select ifnull(salary,0) from salary;
    +------------------+
    | ifnull(salary,0) |
    +------------------+
    |     1000.00 |
    |     2000.00 |
    |     3000.00 |
    |     4000.00 |
    |     5000.00 |
    |       0.00 |
    +------------------+
    6 rows in set (0.00 sec)
    
    

    CASE WHEN [value1] THEN[result1]… ELSE[default] END函數:這里可以用case when..then函數實現上面例子中高薪低薪的問題.

    mysql> select CASE WHEN salary<=2000 THEN 'low' else 'high' END from salary;
    +---------------------------------------------------+
    | CASE WHEN salary<=2000 THEN 'low' else 'high' END |
    +---------------------------------------------------+
    | low                        |
    | low                        |
    | high                       |
    | high                       |
    | high                       |
    | high                       |
    +---------------------------------------------------+
    6 rows in set (0.00 sec)
    
    
    
    下一篇:沒有了
青海十一选五开奖数据