<option id="mwy0y"><strong id="mwy0y"></strong></option>
  • <ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <ul id="mwy0y"></ul>
  • <del id="mwy0y"><dfn id="mwy0y"></dfn></del><ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <abbr id="mwy0y"></abbr>

    千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:長沙千鋒IT培訓  >  技術干貨  >  is NULL和= NULL,is not NULL和!= NULL有什么區別?

    is NULL和= NULL,is not NULL和!= NULL有什么區別?

    來源:千鋒教育
    發布人:xqq
    時間: 2023-10-18 15:06:30

    一、is NULL和= NULL的區別

    在 SQL 中,is NULL 用來判斷一個值是否為 NULL,它是一個布爾表達式,當判斷對象為 NULL 時,返回 TRUE;否則返回 FALSE。例如:

    SELECT * FROM mytable WHERE mycolumn IS NULL;

    這條語句將會查詢 mytable 表中 mycolumn 列值為 NULL 的行。

    而 = NULL 則不同,因為在 SQL 中,NULL 不是一個常量,而是一個未知的值。因此,當使用 = 操作符判斷某個值和 NULL 是否相等時,結果始終為 UNKNOWN。例如:

    SELECT * FROM mytable WHERE mycolumn = NULL;

    這條語句將返回空集,因為 mycolumn 列中的值無法確定是否等于 NULL。

    因此,在 SQL 中,應該使用 is NULL 來判斷一個值是否為 NULL。

    二、is not NULL和!= NULL的區別

    在 SQL 中,is not NULL 是一個布爾表達式,當判斷對象不為 NULL 時,返回 TRUE;否則返回 FALSE。例如:

    SELECT * FROM mytable WHERE mycolumn IS NOT NULL;

    這條語句將會查詢 mytable 表中 mycolumn 列值不為 NULL 的行。

    而 != NULL 則和 = NULL 一樣,因為 NULL 不是一個常量,而是一個未知的值。因此,當使用 != 操作符判斷某個值和 NULL 是否不相等時,結果也始終為 UNKNOWN。例如:

    SELECT * FROM mytable WHERE mycolumn != NULL;

    這條語句將返回空集,因為 mycolumn 列中的值無法確定是否不等于 NULL。

    因此,在 SQL 中,應該使用 is not NULL 來判斷一個值是否不為 NULL。

    三、SQL語言NULL值詳解

    1、簡介

    NULL 值代表遺漏的未知數據。默認地,表的列可以存放 NULL 值。如果表中的某個列是可選的,那么我們可以在不向該列添加值的情況下插入新記錄或更新已有的記錄。這意味著該字段將以 NULL 值保存。NULL 值的處理方式與其他值不同。NULL 用作未知的或不適用的值的占位符。

    注意:無法比較 NULL 和 0;它們是不等價的。

    2、特點

    null來表示未知和不確定:null 在計算機和編程世界中表示的是未知,不確定。雖然中文翻譯為“空”, 但此空(null)非彼空(empty)。null表示的是一種未知狀態,未來狀態,比如小明兜里有多少錢我不清楚,但也不能肯定為0,這時在計算機中就使用null來表示未知和不確定。null不支持大小/相等判斷:null表示的是什么都沒有,它與空字符串、0 這些是不等價的,是不能用于比較的! 如: 0 = null 、null = ” 、null>3、null!=’hehe’、null<10、age not in (10,20,null)、a!=’null’得到的結果為 false。

    正因為以上原因,要少用null。一方面不利于代碼的可讀性和可維護性,特別是強類型語言,查詢 INT 值,結果得到一個 NULL,程序可能會奔潰…如果要兼容這些情況程序往往需要多做很多操作來兜底。另一方面若所在列存在 null值,會影響 count()、 != 、null + 1 等查詢、統計、運算情景的結果。

    3、處理

    請看下面的 “Persons” 表:

    假如 “Persons” 表中的 “Address” 列是可選的。這意味著如果在 “Address” 列插入一條不帶值的記錄,”Address” 列會使用 NULL 值保存。那么我們如何測試 NULL 值呢?無法使用比較運算符來測試 NULL 值,比如 =、< 或 <>。我們必須使用 IS NULL 和 IS NOT NULL 操作符。

    4、三元邏輯

    一個 SQL 語句中 WHERE 子句有三種不同的結果:

    true(會返回數據)false(不會返回數據)NULL(「未知」也不會返回數據)

    好了,那既然 false 和 NULL 都不會返回數據,那干嘛還要關注它們的區別呢?當遇上 NOT() 的時候就有問題了。比如下面這個語句,1 肯定等于 1,顯然經過 NOT() 后就會變成 false,那就永遠不會返回數據:

    SELECT * FROM SOME_TABLEWHERE NOT(1 = 1)

    下面這句呢,顯然 NOT() 后會得到 true,當然會返回數據:

    SELECT * FROM SOME_TABLEWHERE NOT(1 = 0)

    但是這句呢:

    SELECT * FROM SOME_TABLEWHERE NOT(1 = NULL)

    上面這句 1 = NULL 由于數據庫不知道 NULL 是什么,「未知」,所以其結果是 NULL。對 NOT() 來說呢,它也不知道 NULL 是什么,該怎么處理,所以也會返回 NULL,所以 WHERE 子句得到的是 NULL,既不是 true 也不是 false 而是 NULL,所以上面這條語句永遠都不會返回數據。

    那么好了,看下面這兩條語句,雖然是相反的條件,但結果一致:都不會查詢到數據。

    SELECT * FROM SOME_TABLE
    WHERE NOT(1 = NULL)
    SELECT * FROM SOME_TABLE
    WHERE 1 = NULL

    5、NOT IN 和 NULL

    NOT IN 也是非常值得注意的。比如下面這個 SQL,1 顯然在后面的列表中,WHERE 就會得到 true,那么就會查詢到數據:

    SELECT * FROM SOME_TABLE
    WHERE 1 IN (1, 2, 3, 4, NULL)

    再看下面這句,顯然 1 是在數組中的,那么 NOT IN 就會得到 false,那么就不能查詢到數據:

    SELECT * FROM SOME_TABLE
    WHERE 1 NOT IN (1, 2, 3, 4, NULL)

    再看這個:

    SELECT * FROM SOME_TABLE
    WHERE 5 NOT IN (1, 2, 3, 4, NULL)

    先說答案:這句語句不能查詢到數據。5 在不在后面的列表中呢?數據庫是不知道的,因為里面有個 NULL,誰知道 5 等不等于 NULL(「未知」),不知道,所以 5 NOT IN (1, 2, 3, 4, NULL) 得到的是 NULL,所以查詢不到數據。

    延伸閱讀1:SQL語言NULL值相關函數

    ifnull():兩參數,若名列前茅個參數不為空,返回該字段,若為空,返回第二個參數。coalesce():多參數,返回名列前茅個非空值。nullif():該函數接受兩個參數,相等則返回null,不相等則返回名列前茅個參數。
    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    python實現WSGI的框架

    2023-11-13

    python打開文本文件有哪些方法?

    2023-11-13

    python使用loguru操作日志

    2023-11-13

    最新文章NEW

    python-=是什么意思

    2023-11-13

    pythonre是什么?

    2023-11-13

    python列表追加元素出錯的解決

    2023-11-13

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>