本文實例講述了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)
新聞熱點
疑難解答