最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL IF 和 IFNULL 用法示例詳解

 更新時(shí)間:2026年03月31日 09:12:28   作者:程序員煙花  
MySQL中的條件判斷和空值處理是開(kāi)發(fā)中的常見(jiàn)需求,本文詳細(xì)解析了IF和IFNULL兩個(gè)核心函數(shù),文章通過(guò)多個(gè)實(shí)戰(zhàn)示例展示了它們的用法,感興趣的朋友跟隨小編一起看看吧

在 MySQL 開(kāi)發(fā)中,條件判斷空值處理是非常常見(jiàn)的需求。其中,IFIFNULL 是最常用的兩個(gè)函數(shù)。

一、IF 函數(shù)詳解

1. 基本語(yǔ)法

IF(condition, value_if_true, value_if_false)

含義:

如果 condition 為真,返回 value_if_true,否則返回 value_if_false。

2. 基礎(chǔ)示例

SELECT IF(1 > 0, 'yes', 'no');

結(jié)果:

yes

3. 實(shí)戰(zhàn)示例

示例1:判斷成績(jī)是否及格

SELECT name,
       score,
       IF(score >= 60, '及格', '不及格') AS result
FROM student;

示例2:根據(jù)金額分類(lèi)

SELECT amount,
       IF(amount > 1000, '高消費(fèi)', '普通消費(fèi)') AS level
FROM orders;

4. IF 的嵌套使用

SELECT score,
       IF(score >= 90, '優(yōu)秀',
          IF(score >= 60, '及格', '不及格')) AS level
FROM student;

說(shuō)明:

IF 可以嵌套實(shí)現(xiàn)多條件判斷。

二、IFNULL 函數(shù)詳解

1. 基本語(yǔ)法

IFNULL(expr1, expr2)

含義:

如果 expr1 不為 NULL,返回 expr1,否則返回 expr2。

2. 基礎(chǔ)示例

SELECT IFNULL(NULL, '默認(rèn)值');

結(jié)果:

默認(rèn)值

3. 實(shí)戰(zhàn)示例

示例1:處理 NULL 值

SELECT name,
       IFNULL(phone, '未填寫(xiě)') AS phone
FROM user;

示例2:計(jì)算時(shí)避免 NULL

SELECT price * IFNULL(quantity, 0) AS total
FROM orders;

說(shuō)明:

防止 NULL 參與計(jì)算導(dǎo)致結(jié)果為 NULL。

三、IF vs IFNULL 核心區(qū)別

對(duì)比維度IFIFNULL
功能條件判斷空值處理
參數(shù)個(gè)數(shù)3 個(gè)2 個(gè)
判斷方式任意條件是否為 NULL
使用場(chǎng)景分支邏輯默認(rèn)值處理

IF 用來(lái)“做判斷”,IFNULL 用來(lái)“補(bǔ)空值”。

四、組合使用示例

在實(shí)際開(kāi)發(fā)中,經(jīng)常會(huì)組合使用:

SELECT name,
       IF(IFNULL(score, 0) >= 60, '及格', '不及格') AS result
FROM student;

邏輯:

  1. 先用 IFNULL 處理空值
  2. 再用 IF 判斷

五、常見(jiàn)坑點(diǎn)總結(jié)

1. NULL 參與計(jì)算問(wèn)題

SELECT 1 + NULL;

結(jié)果:

NULL

解決:

SELECT 1 + IFNULL(NULL, 0);

2. IF 不是流程控制語(yǔ)句

注意:

  • IF 是函數(shù)(表達(dá)式)
  • 不是存儲(chǔ)過(guò)程里的 IF 語(yǔ)句

3. 嵌套過(guò)多影響可讀性

建議:

多條件優(yōu)先使用 CASE WHEN。

六、擴(kuò)展:CASE WHEN(推薦)

SELECT score,
       CASE
           WHEN score >= 90 THEN '優(yōu)秀'
           WHEN score >= 60 THEN '及格'
           ELSE '不及格'
       END AS level
FROM student;

優(yōu)點(diǎn):

  • 可讀性更強(qiáng)
  • 更適合復(fù)雜邏輯

參考

https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_if

https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifnull

到此這篇關(guān)于MySQL IF 和 IFNULL 用法示例詳解的文章就介紹到這了,更多相關(guān)mysql if和ifnull用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

呼和浩特市| 青河县| 靖宇县| 永吉县| 长海县| 兰考县| 廊坊市| 沾化县| 时尚| 贺州市| 乐亭县| 临西县| 嘉善县| 秭归县| 建始县| 胶南市| 依兰县| 大丰市| 沂南县| 福安市| 沙雅县| 平利县| 拜城县| 南阳市| 大丰市| 图们市| 怀远县| 噶尔县| 政和县| 雅江县| 历史| 郓城县| 泾阳县| 太仓市| 台中市| 永登县| 迁西县| 黄浦区| 正宁县| 宁乡县| 名山县|