在本教學中,您將瞭解MySQL IFNULL()
函數,這是一個非常方便的控制流函數來處理NULL
值。
MySQL IFNULL函數簡介
MySQL IFNULL
函數是MySQL控制流函數之一,它接受兩個參數,如果不是NULL
,則返回第一個參數。 否則,IFNULL
函數返回第二個參數。
兩個參數可以是文字值或運算式。
以下說明了IFNULL
函數的語法:
IFNULL(expression_1,expression_2);
如果expression_1
不為NULL
,則IFNULL
函數返回expression_1
; 否則返回expression_2
的結果。
IFNULL
函數根據使用的上下文返回字串或數字。
如果要返回基於TRUE
或FALSE
條件的值,而不是NULL
,則應使用IF函數。
MySQL的IFNULL函數示例
請參見以下IFNULL
函數示例:
示例-1
SELECT IFNULL(1,0); -- returns 1
示例-2
SELECT IFNULL('',1); -- returns ''
示例-3
SELECT IFNULL(NULL,'IFNULL function'); -- returns IFNULL function
上面示例中的語句是怎麼運行的?
IFNULL(1,0)
返回1
,因為1
不為NULL
。IFNULL('',1)
返回''
,因為''
字串不為NULL
。IFNULL(NULL,'IFNULL function')
返回IFNULL
函數字串,因為第一個參數為NULL
。
我們來看一下使用IFNULL
函數的實例。
首先,使用以下語句創建一個名為contacts
的新表:
USE testdb;
CREATE TABLE IF NOT EXISTS contacts (
contactid INT AUTO_INCREMENT PRIMARY KEY,
contactname VARCHAR(20) NOT NULL,
bizphone VARCHAR(15),
homephone VARCHAR(15)
);
每個聯繫人都有一個名字,業務電話和家庭電話。
其次,將數據插入到contacts
表中:
INSERT INTO contacts(contactname,bizphone,homephone)
VALUES('John Doe','(541) 754-3009',NULL),
('Cindy Minsu',NULL,'(541) 754-3110'),
('Sue Greenspan','(541) 754-3010','(541) 754-3011'),
('Lily Bush',NULL,'(541) 754-3111');
一些聯繫人只有家庭電話或商務電話。要從contacts
表中獲取所有聯繫人姓名和電話,請使用以下查詢:
SELECT
contactName, bizphone, homephone
FROM
contacts;
執行上面查詢語句,得到以下結果 -
+---------------+----------------+----------------+
| contactName | bizphone | homephone |
+---------------+----------------+----------------+
| John Doe | (541) 754-3009 | NULL |
| Cindy Minsu | NULL | (541) 754-3110 |
| Sue Greenspan | (541) 754-3010 | (541) 754-3011 |
| Lily Bush | NULL | (541) 754-3111 |
+---------------+----------------+----------------+
4 rows in set
如果聯繫人的商務電話不可用,可以通過查詢獲得聯繫人的家庭電話也是一個獲取聯繫方式的辦法 -
SELECT
contactname, IFNULL(bizphone, homephone) phone
FROM
contacts;
這可以使用IFNULL()
函數來解決。如果bizphone
為NULL
,則IFNULL
函數將返回homephone
的值。
第三,使用以下查詢獲取所有聯繫人的姓名和電話:
mysql> SELECT
contactname, IFNULL(bizphone, homephone) phone
FROM
contacts;
+---------------+----------------+
| contactname | phone |
+---------------+----------------+
| John Doe | (541) 754-3009 |
| Cindy Minsu | (541) 754-3110 |
| Sue Greenspan | (541) 754-3010 |
| Lily Bush | (541) 754-3111 |
+---------------+----------------+
4 rows in set
請注意,應避免在WHERE子句中使用IFNULL
函數,因為它會降低查詢的性能。
如果要檢查值是否為NULL
,則可以在WHERE
子句中使用IS NULL
或IS NOT NULL
。
在本教學中,我們向您介紹了MySQL IFNULL
函數,並向您展示了如何在查詢中使用IFNULL
函數。
上一篇:
MySQL函數
下一篇:
MySQL+Node.js連接和操作