MySQL流程函數

MySQL流程函數

IF(value,x y) 如果value是真,返回x,否則返回y
MariaDB [learn]> INSERT INTO salary(sal) VALUES (1000),(2000),(3000),(4000),(5000),(6000),(NULL);
Query OK, 7 rows affected (0.06 sec)
Records: 7  Duplicates: 0  Warnings: 0

MariaDB [learn]> SELECT * FROM salary;
+----+------+
| id | sal  |
+----+------+
|  1 | 1000 |
|  2 | 2000 |
|  3 | 3000 |
|  4 | 4000 |
|  5 | 5000 |
|  6 | 6000 |
|  7 | NULL |
+----+------+

MariaDB [learn]> SELECT id,if(sal>2000,'high','low') FROM salary;
+----+---------------------------+
| id | if(sal>2000,'high','low') |
+----+---------------------------+
|  1 | low                       |
|  2 | low                       |
|  3 | high                      |
|  4 | high                      |
|  5 | high                      |
|  6 | high                      |
|  7 | low                       |
+----+---------------------------+
7 rows in set (0.01 sec)
IFNULL(value1,value2) 如果value1不為空,返回value1,否則返回value2

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

MariaDB [learn]> SELECT id,ifnull(sal,0) FROM salary; 
+----+---------------+
| id | ifnull(sal,0) |
+----+---------------+
|  1 |          1000 |
|  2 |          2000 |
|  3 |          3000 |
|  4 |          4000 |
|  5 |          5000 |
|  6 |          6000 |
|  7 |             0 |
+----+---------------+
7 rows in set (0.01 sec)

CASE WHEN [value] THEN [result]…ELSE [default] END 如果value為真 ,返回result,否則返回default

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

MariaDB [learn]> SELECT id,case when sal<=2000 then 'low' else 'high' end FROM salary;
+----+------------------------------------------------+
| id | case when sal<=2000 then 'low' else 'high' end |
+----+------------------------------------------------+
|  1 | low                                            |
|  2 | low                                            |
|  3 | high                                           |
|  4 | high                                           |
|  5 | high                                           |
|  6 | high                                           |
|  7 | high                                           |
+----+------------------------------------------------+
7 rows in set (0.01 sec)

CASE [expr] WHEN [value] THEN [result]…ELSE [default] END 如果expr等于value,返回result,否則返回default。

CASE [expr] WHEN [value] THEN [result]…ELSE [default] END函數:這里可以分多種情況把職員的薪水分多個檔次,比如下面的例子成分高、中、低3種情況。同樣還可以分成更多情況,這里就不再舉例了。

MariaDB [learn]> SELECT id,CASE sal WHEN 1000 THEN 'low' WHEN 2000 THEN 'mid' ELSE 'low' END AS LEVEL FROM salary;  
+----+-------+
| id | LEVEL |
+----+-------+
|  1 | low   |
|  2 | mid   |
|  3 | low   |
|  4 | low   |
|  5 | low   |
|  6 | low   |
|  7 | low   |
+----+-------+
7 rows in set (0.01 sec)

原創文章,作者:dance_man,如若轉載,請注明出處:http://www.www58058.com/74581

(0)
dance_mandance_man
上一篇 2017-05-01
下一篇 2017-05-02

相關推薦

  • 馬哥教育網絡班21期+第五周課程練習

    馬哥教育網絡班21期+第5周課程練習 [TOC] 1. 顯示/boot/grub/grub.conf中至少以一個空白字符開頭的行。 [root@rhel-5 ~]# grep -E '^[[:space:]]+' /boot/grub/grub.conf  root (hd…

    Linux干貨 2016-08-02
  • N22-第24周博客作業——-虛擬化技術

    虛擬化技術—基礎(1) 本文圍繞下面3個問題進行對虛擬化技術展開討論: 1、虛擬化技術實現方式有哪些?虛擬化技術分哪些? 2、請分別通過kvm、xen工具來實現虛擬化系統的部署? 3、請描述openstack、kvmqemu-kv、libvirt及xen之間的關系。 虛擬化誕生和發展     1961年 IBM709…

    Linux干貨 2016-10-17
  • 01day-計算機與操作系統基礎

    第1章 計算機基礎 1.1 什么是計算機 計算機是個籠統的概念,泛指一切計算功能的機器。這樣扯的話,以前的算盤也是計算機了。我們現在的計算機應該稱作電子計算機,我天朝人民稱為電腦。聽說谷歌在研究量子計算機,完全不懂是什么玩意。 一不小心在百度百科看到還有光子計算機,生物計算機,嚇我一跳,趕緊復制鏈接過來,自己慢慢看《百度百科—-計算機》 &nbs…

    Linux干貨 2016-06-29
  • 交換分區創建和磁盤配額的使用

    一、交換分區的建立與啟用:     交換分區是作為內存的一個輔助分區,在內存吃緊時,交換分區會作為內存的一部分使用,但是效率比起內存來說會很低下,在一個硬盤分區時最好使用柱面較小的柱面作為交換分區,因為在機械硬盤轉速一定的情況下,越靠近外面的磁道,線速度越大,讀取到的扇區越多,一定程度上有利于提高性能   &…

    Linux干貨 2016-08-29
  • rsyslog日志系統

    一、前言  什么是日志?    日志就是歷史事件,按時間序列將發生的事件予以記錄;日志記錄信息記錄的是事件的發生時間以及事件內容  Linux下記錄日志的系統:    syslog:是CentOS 5.0系統上使用的日志系統,有兩類日志,分別是syslogd、klogd;    …

    Linux干貨 2015-06-15
  • 文件系統結構

    -文件系統結構
    -應用程序的組成部分
    -文件類型

    2018-03-13
欧美性久久久久