案例說明SQL語言中 is null 和 =null 的區別


案例說明SQL語言中 is null 和 =null 的區別

之前在某網站中遇到了一道題:某商城包含兩個表,Customers 表和 Orders 表。編寫一個 SQL 查詢,找出所有從不訂購任何東西的客戶。
Customers:

id name
1 J
2 H
3 S
4 M

Orders:

id CustomerId
1 3
2 1

題目很簡單只需要兩張表進行左連接,然后找出為null的字段就行,但其中卻包含陷阱;

select name as Customers
from Customers c left join Orders o
on c.id = o.CustomerId
where o.CustomerId is null;

仔細想想為什么where條件是is null;而不是 = null?
如果用=null查詢的結果是空值;
我們首先仔細想想左連接有什么樣的特點?當兩張表進行左連接的時候,左邊的表會全部保留,而右邊的表會根據關聯字段進行保留,如果關聯字段不相等的,右邊會默認為null;例如上面案例:

左右連接產生的是字符串的'NULL'而不是沒有值而產生的NULL;
所以當我們用is null的時候可以查出數據,而用=null卻查不出數據;
總結:
IS NULL 是判斷某個字符是否為空,並不代表空字符或者是0;
=NULL 是判斷某個值是否等於NULL,可能是沒有值;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM