亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL中ifnull和isnull的用法及其平替方法

 更新時(shí)間:2023年12月06日 10:39:47   作者:小...羊  
ifnull和isnull都是MySQL的函數(shù),用于對(duì)NULL值進(jìn)行處理,本文就來(lái)介紹MySQL中ifnull和isnull的用法及其平替方法,感興趣的可以了解一下

ifnull 和 isnull 的用法

ifnull 和 isnull 都是 MySQL 的函數(shù),用于對(duì) NULL 值進(jìn)行處理。在 SQL 查詢中,遇到 NULL 值會(huì)導(dǎo)致計(jì)算錯(cuò)誤或者返回空值,因此需要使用 ifnull 和 isnull 對(duì) NULL 值進(jìn)行檢測(cè)和替換。ifnull 函數(shù)可以用于替換空值,isnull 函數(shù)則用于判斷給定的表達(dá)式是否為 NULL 值。ifnull 和 isnull 的語(yǔ)法如下:

IFNULL(expr1, expr2); ISNULL(expr);

其中,expr1 是需要檢測(cè)的表達(dá)式,expr2 是用于替換 NULL 值的值。使用 ifnull 和 isnull 時(shí)需要注意以下幾點(diǎn):

  • ifnull 函數(shù)返回第一個(gè)非 NULL 值,如果都是 NULL,則返回 expr2。
  • isnull 函數(shù)返回一個(gè)布爾值,如果表達(dá)式為 NULL,則返回 1,否則返回 0。
  • ifnull 和 isnull 都可以在 SELECT、INSERT、UPDATE 和 REPLACE 語(yǔ)句中使用。

假設(shè)我們有一個(gè)存儲(chǔ)用戶信息的表 users,其中包含了用戶 ID、用戶名和手機(jī)號(hào)三個(gè)字段。但是有些用戶可能沒(méi)有手機(jī)號(hào),因此手機(jī)號(hào)列可能會(huì)出現(xiàn) NULL 值。我們現(xiàn)在需要查詢所有用戶的 ID 和手機(jī)號(hào),如果手機(jī)號(hào)為空,則使用默認(rèn)值 000-0000-0000??梢允褂?ifnull 函數(shù)如下:

SELECT user_id, IFNULL(phone_number, '000-0000-0000') AS phone_number FROM users;

在上面的示例中,我們使用了 IFNULL 函數(shù)檢測(cè)手機(jī)號(hào)列是否為 NULL 值,并根據(jù)檢測(cè)結(jié)果用默認(rèn)值替換了 NULL 值。

如果不需要替換 NULL 值,而只是需要判斷表達(dá)式是否為 NULL,則可以使用 isnull 函數(shù)。例如,我們現(xiàn)在需要查詢所有手機(jī)號(hào)為空的用戶信息,可以使用 isnull 函數(shù)如下:

SELECT user_id, phone_number FROM users WHERE ISNULL(phone_number);

在上面的示例中,我們使用了 ISNULL 函數(shù)判斷手機(jī)號(hào)列是否為 NULL 值,并在 WHERE 子句中過(guò)濾了為空的結(jié)果。

其他與 ifnull 和 isnull 類似的函數(shù)

除了 ifnull 和 isnull,還有一些與這兩個(gè)函數(shù)類似的函數(shù)可以用于對(duì) NULL 值進(jìn)行處理。其中比較常見的包括以下幾種:

coalesce

coalesce 函數(shù)是一個(gè)通用的函數(shù),可以用于檢測(cè)多個(gè)表達(dá)式是否為 NULL 值,并返回第一個(gè)非 NULL 值。其語(yǔ)法如下:

COALESCE(expr1, expr2, ..., expr_n);

在上面的語(yǔ)法中,expr1 是需要檢測(cè)的第一個(gè)表達(dá)式,expr2 到 expr_n 是需要檢測(cè)的其他表達(dá)式。如果所有表達(dá)式都為 NULL,則返回 NULL 值。

假設(shè)我們有一個(gè)存儲(chǔ)用戶信息的表 users,其中包含了用戶 ID、用戶名和手機(jī)號(hào)三個(gè)字段。但是有些用戶可能沒(méi)有手機(jī)號(hào)或者用戶名,因此這些列可能會(huì)出現(xiàn) NULL 值。我們現(xiàn)在需要查詢所有用戶的 ID、用戶名和手機(jī)號(hào),如果這些列為空,則使用默認(rèn)值??梢允褂?coalesce 函數(shù)如下:

SELECT user_id, COALESCE(username, 'Unknown') AS username, COALESCE(phone_number, '000-0000-0000') AS phone_number FROM users;

在上面的示例中,我們使用了 COALESCE 函數(shù)檢測(cè)用戶名和手機(jī)號(hào)列是否為 NULL 值,并根據(jù)檢測(cè)結(jié)果用默認(rèn)值替換了 NULL 值。

nullif

nullif 函數(shù)用于比較兩個(gè)表達(dá)式,如果這兩個(gè)表達(dá)式相等,則返回 NULL 值。主要用于在避免除以零或其他無(wú)效操作時(shí)使用。其語(yǔ)法如下:

NULLIF(expr1, expr2);

在上面的語(yǔ)法中,expr1 和 expr2 是需要比較的表達(dá)式。如果這兩個(gè)表達(dá)式相等,則返回 NULL 值。

假設(shè)我們有一個(gè)存儲(chǔ)商品信息的表 products,其中包含了商品名稱、價(jià)格和數(shù)量三個(gè)字段。我們現(xiàn)在需要計(jì)算每個(gè)商品的單價(jià),但是有些商品數(shù)量為 0,因此需要使用 nullif 函數(shù)避免除以零??梢允褂?nullif 函數(shù)如下:

SELECT product_name, price / NULLIF(quantity, 0) AS unit_price FROM products;

在上面的示例中,我們使用了 NULLIF 函數(shù)比較數(shù)量列是否為 0,如果是則返回 NULL 值,避免了除以零的錯(cuò)誤。

結(jié)論

ifnull 和 isnull 是 MySQL 中常用的函數(shù),用于處理 NULL 值。ifnull 用于替換 NULL 值,isnull 用于判斷表達(dá)式是否為 NULL 值。除了這兩個(gè)函數(shù)之外,還有一些與 ifnull 和 isnull 類似的函數(shù)可用于對(duì) NULL 值進(jìn)行處理,包括 coalesce 和 nullif 等。在使用這些函數(shù)時(shí),需要根據(jù)實(shí)際需求選擇合適的語(yǔ)句,以達(dá)到最佳的查詢效果。

示例代碼

以下是用于演示 ifnull、isnull、coalesce 和 nullif 的 SQL 語(yǔ)句以及相應(yīng)的結(jié)果:

ifnull 示例

SELECT user_id, IFNULL(phone_number, '000-0000-0000') AS phone_number FROM users;
user_idphone_number
1111-1111-1111
2222-2222-2222
3000-0000-0000
4NULL

isnull 示例

SELECT user_id, phone_number FROM users WHERE ISNULL(phone_number);
user_idphone_number
3NULL
4NULL

coalesce 示例

SELECT user_id, COALESCE(username, 'Unknown') AS username, COALESCE(phone_number, '000-0000-0000') AS phone_number FROM users;
user_idusernamephone_number
1Alice111-1111-1111
2Bob222-2222-2222
3Unknown000-0000-0000
4Unknown000-0000-0000

nullif 示例

SELECT product_name, price / NULLIF(quantity, 0) AS unit_price FROM products;
product_nameunit_price
Apple1.00
Banana0.50
OrangeNULL
Mango2.00

 到此這篇關(guān)于MySQL中ifnull和isnull的用法及其平替方法的文章就介紹到這了,更多相關(guān)MySQL ifnull isnull內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql表連接的誤區(qū)與原理詳析

    Mysql表連接的誤區(qū)與原理詳析

    在使用MySQL數(shù)據(jù)庫(kù)過(guò)程中,left?join?基本是必用的語(yǔ)法,下面這篇文章主要給大家介紹了關(guān)于Mysql表連接的誤區(qū)與原理的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • mysql 模糊搜索的方法介紹

    mysql 模糊搜索的方法介紹

    本文將提供兩種方法,第一種最土的方法:使用like語(yǔ)句第二種用全文索引,接下來(lái)將為你詳細(xì)介紹
    2012-11-11
  • MySQL子查詢?cè)敿?xì)教程

    MySQL子查詢?cè)敿?xì)教程

    這篇文章主要介紹了MySQL子查詢?cè)敿?xì)教程的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • MySQL三種安裝方法(yum安裝、編譯安裝、二進(jìn)制安裝)

    MySQL三種安裝方法(yum安裝、編譯安裝、二進(jìn)制安裝)

    本文主要介紹了MySQL三種安裝方法,包含yum安裝、編譯安裝、二進(jìn)制安裝這三種,文中通過(guò)示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • MySQL讀取JSON轉(zhuǎn)換的方式

    MySQL讀取JSON轉(zhuǎn)換的方式

    這篇文章主要介紹了MySQL讀取JSON轉(zhuǎn)換的方式,本文給大家分享兩種方式給大家講解處理方式,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • InnoDB中不同SQL語(yǔ)句設(shè)置鎖的情況詳解

    InnoDB中不同SQL語(yǔ)句設(shè)置鎖的情況詳解

    這篇文章主要介紹了InnoDB中不同SQL語(yǔ)句設(shè)置鎖的情況詳解,在Mysql中,鎖定讀、更新、刪除操作通常會(huì)對(duì)SQL語(yǔ)句處理過(guò)程中掃描到的每條索引記錄設(shè)置記錄鎖,需要的朋友可以參考下
    2024-01-01
  • mysql中的concat()函數(shù)模糊查詢代替${}問(wèn)題

    mysql中的concat()函數(shù)模糊查詢代替${}問(wèn)題

    這篇文章主要介紹了mysql中的concat()函數(shù)模糊查詢代替${}問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 一文掌握MySQL表的創(chuàng)建和約束

    一文掌握MySQL表的創(chuàng)建和約束

    這篇文章主要和大家分享一下數(shù)據(jù)庫(kù)的創(chuàng)建和銷毀語(yǔ)法以及詳細(xì)講解MySQL表的創(chuàng)建代碼和約束的使用,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-07-07
  • MySQL使用GROUP BY分組查詢

    MySQL使用GROUP BY分組查詢

    GROUP BY關(guān)鍵字可以根據(jù)一個(gè)或多個(gè)字段對(duì)查詢結(jié)果進(jìn)行分組,本文主要介紹了MySQL使用GROUP BY分組查詢,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說(shuō)明詳解(16G內(nèi)存)

    mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說(shuō)明詳解(16G內(nèi)存)

    這篇文章主要介紹了mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說(shuō)明詳解(16G內(nèi)存),需要的朋友可以參考下
    2016-05-05

最新評(píng)論