使用mysql查詢數據庫,當執行left join時,有些關聯的字段內容是NULL,因此獲取記錄集后,需要對NULL的數據進行轉換操作。
本文將提供一種方法,可以在查詢時直接執行轉換處理。使獲取到的記錄集不需要再進行轉換。
mysql提供了IFNULL函數
IFNULL(expr1, expr2)
如果expr1不是NULL,IFNULL()返回expr1,否則返回expr2
實例:
user表結構和數據
1
2
3
4
5
6
7
|
+ ----+-----------+ | id | name | + ----+-----------+ | 1 | Abby | | 2 | Daisy | | 3 | Christine | + ----+-----------+ |
user_lastlogin表結構和數據
1
2
3
4
5
6
|
+ -----+---------------+ | uid | lastlogintime | + -----+---------------+ | 1 | 1488188120 | | 3 | 1488188131 | + -----+---------------+ |
查詢user的name與lastlogintime
mysql> select a.id,a.name,b.lastlogintime from user as a left join user_lastlogin as b on a.id=b.uid;
1
2
3
4
5
6
7
|
+ ----+-----------+---------------+ | id | name | lastlogintime | + ----+-----------+---------------+ | 1 | Abby | 1488188120 | | 2 | Daisy | NULL | | 3 | Christine | 1488188131 | + ----+-----------+---------------+ |
因為id=2的用戶未登入過,所以在user_lastlogin表中沒有記錄。因此lastlogintime為NULL。
使用IFNULL把NULL轉為0
1
2
3
4
5
6
7
8
9
|
IFNULL(lastlogintime, 0) mysql> select a.id,a. name ,IFNULL(b.lastlogintime,0) as lastlogintime from user as a left join user_lastlogin as b on a.id=b.uid; + ----+-----------+---------------+ | id | name | lastlogintime | + ----+-----------+---------------+ | 1 | Abby | 1488188120 | | 2 | Daisy | 0 | | 3 | Christine | 1488188131 | + ----+-----------+---------------+ |
以上這篇mysql 轉換NULL數據方法(必看)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。