• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            SQLNULL(sqlnull是什么意思)

            更新時間:2023-03-02 09:05:43 閱讀: 評論:0

            在查詢數據庫時,如果你想知道一個列是否為 NULL,SQL 查詢語句該怎么寫呢?

            是不是這樣:

            SELECT * FROM SOME_TABLEWHERE SOME_COLUMN IS NULL

            或者這樣寫:

            復制代碼

            WHERE SOME_COLUMN = 1

            正確的寫法應該是第二種(WHERE SOME_COLUMN IS NULL)。

            為什么要這樣寫?

            在進行數據庫數據比較操作時,我們不會使用“IS”關鍵詞,不是嗎?

            例如,如果我們想要知道一個列的值是否等于 1,WHERE 語句是這樣的:

            復制代碼

            WHERE SOME_COLUMN = 1

            那為什么 NULL 值要用 IS 關鍵字呢?為什么要以這種方式來處理 NULL?

            因為,在 SQL 中,NULL 表示“未知”。也就是說,NULL 值表示的是“未知”的值。

            NULL 等于未知

            在大多數數據庫中,NULl 和空字符串是有區別的。

            但并不是所有數據庫都這樣,例如,Oracle 就不支持空字符串,它會把空字符串自動轉成 NULL 值。

            在其他大多數數據庫里,NULL 值和字符串的處理方式是不一樣的:

            空字符串表示“沒有值”,這個值是已知的。NULL 表示“未知值”,這個值是未知的。

            這就好比我問了一個問題:“美國總統羅斯福的中間名是什么”?

            可能有人會回答說:“我不知道羅斯福總統的中間名是什么”。對于這種情況,可以在數據庫中使用 MIDDLE_NAME 列來表示羅斯福的中間名,而這一列的值為 NULL。也可能有人會回答說:“羅斯福總統沒有中間名。他的父母沒有給他取中間名,所以我知道羅斯福總統確實沒有中間名”。對于這種情況,MIDDLE_NAME 列應該是一個空字符串。

            Oracle 比較特殊,兩個值都使用 NULL 來表示,而其他大多數數據庫會區分對待。

            但只要記住 NULL 表示的是一個未知的值,那么在寫 SQL 查詢語句時就會得心應手。

            例如,如果你有一個這樣的查詢語句:

            復制代碼

            SELECT * FROM SOME_TABLEWHERE 1 = 1

            這個查詢會返回所有的行(假設 SOME_TABLE 不是空表),因為表達式“1=1”一定為 true。

            如果我這樣寫:

            復制代碼

            SELECT * FROM SOME_TABLEWHERE 1 = 0

            表達式“1=0”是 fal,這個查詢語句不會返回任何數據。

            但如果我寫成這樣:

            復制代碼

            SELECT * FROM SOME_TABLEWHERE 1 = NULL

            這個時候,數據庫不知道這兩個值(1 和 NULL)是否相等,所以它也不會返回任何數據。

            三元邏輯

            SQL 查詢語句中的 WHERE 一般會有三種結果:

            它可以是 true(這個時候會返回數據);它可以是 fal(這個時候不會返回數據);它也可以是 NULL 或未知(這個時候也不會返回數據)。

            你可能會想:“既然這樣,那我為什么要去關心是 fal 還是 NULL?它們不是都不會返回數據嗎?”

            接下來,我來告訴你在哪些情況下會有問題:我們來看看 NOT()。

            假設有這樣的一個查詢語句:

            復制代碼

            SELECT * FROM SOME_TABLEWHERE NOT(1 = 1)

            數據庫首先會計算 1=1,這個顯然是 true。

            接著,數據庫會應用 NOT() 條件,所以 WHERE 返回 fal。

            所以,上面的查詢不會返回任何數據。

            但如果把語句改成這樣:

            復制代碼

            SELECT * FROM SOME_TABLEWHERE NOT(1 = 0)

            數據庫首先會計算 1=0,這個肯定是 fal。

            接著,數據庫應用 NOT() 條件,這樣就得到相反的結果,變成了 true。

            所以,這個語句會返回數據。

            但如果把語句再改成下面這樣呢?

            復制代碼

            SELECT * FROM SOME_TABLEWHERE NOT(1 = NULL)

            數據庫首先計算 1=NULL,它不知道 1 是否等于 NULL,因為它不知道 NULL 的值是什么。

            所以,這個計算不會返回 true,也不會返回 fal,它會返回一個 NULL。

            接下來,NOT() 會繼續解析上一個計算返回的結果。

            當 NOT() 遇到 NULL,它會生成另一個 NULL。未知的相反面是另一個未知。

            所以,對于這兩個查詢:

            復制代碼

            SELECT * FROM SOME_TABLEWHERE NOT(1 = NULL)

            復制代碼

            SELECT * FROM SOME_TABLEWHERE 1 = NULL

            都不會返回數據,盡管它們是完全相反的。

            NULL 和 NOT IN

            如果我有這樣的一個查詢語句:

            復制代碼

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

            很顯然,WHERE 返回 true,這個語句將返回數據,因為 1 在括號列表里是存在的。

            但如果這么寫:

            復制代碼

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

            很顯然,WHERE 返回 fal,這個查詢不會返回數據,因為 1 在括號列表里存在,但我們說的是“NOT IN”。

            但如果我們把語句改成這樣呢?

            復制代碼

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

            這里的 WHRE 不會返回數據,因為它的結果不是 true。數字 5 在括號列表里可能不存在,也可能存在,因為當中有一個 NULL 值(數據庫不知道 NULL 的值是什么)。

            這個 WHERE 會返回 NULL,所以整個查詢不會返回任何數據。

            希望你們現在都清楚該怎么在 SQL 語句中處理 NULL 值了。

            英文原文

            Null Values in SQL Queries

            中文譯文:https://www.infoq.cn/article/CKm0rLd6VZaSxj6iR1ib

            本文發布于:2023-02-28 21:03:00,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/1677719143101309.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:SQLNULL(sqlnull是什么意思).doc

            本文 PDF 下載地址:SQLNULL(sqlnull是什么意思).pdf

            標簽:SQLNULL   sqlnull
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 精品无码三级在线观看视频| 免费观看成年欧美1314www色| av在线播放国产一区| 国产AV影片麻豆精品传媒| 亚洲乳大丰满中文字幕| 麻豆人妻| 国产精品视频午夜福利| 玖玖在线精品免费视频| 最近国语高清免费观看视频| 亚洲av影片在线观看| 亚洲综合精品一区二区三区| 熟妇人妻无码中文字幕老熟妇| 精品深夜av无码一区二区老年| 国产一区二区三区激情视频 | 国产免费一区二区不卡| 精品人妻系列无码天堂| 亚洲和欧洲一码二码三码| 毛片免费观看视频| 中文字幕一区二区三区久久蜜桃| 国产97视频人人做人人爱| 中文字幕精品久久天堂一区| 精品一区精品二区制服| 亚欧美国产综合| 2022亚洲男人天堂| 亚洲欧美啪啪视屏| 99久久精品午夜一区二区| 丰满岳乱妇久久久| www久久只有这里有精品| 日韩放荡少妇无码视频| 亚洲中文字幕无码av| 日韩精品中文女同在线播放| 熟女少妇精品一区二区| 亚洲 日韩 国产 制服 在线| 国产精品欧美一区二区三区不卡| 中文字幕乱码亚洲无线| 亚洲色大成永久WW网站| 国产香蕉尹人在线视频你懂的| 18禁精品一区二区三区| 无码人妻少妇久久中文字幕蜜桃| 亚洲美女少妇偷拍萌白酱| 中文字幕免费不卡二区|