首頁 資料庫 mysql教程 為什麼 NULL = NULL 在 SQL Server 中計算結果為 False?

為什麼 NULL = NULL 在 SQL Server 中計算結果為 False?

Jan 20, 2025 pm 11:12 PM

Why Does NULL = NULL Evaluate to False in SQL Server?

SQL Server 獨特的 NULL 比較:為什麼 NULL = NULL 常常是假

SQL Server 處理 NULL 值的方式與許多其他程式語言不同。 一個常見的混淆來源是 NULL = NULL 通常計算為 FALSE。這不是一個錯誤;而是一個錯誤。這是一個深思熟慮的設計選擇,植根於 NULL 本身的定義。

在 SQL Server 中,NULL 表示未知或缺失值。 因此,比較兩個 NULL 就像比較兩個未知數 – 不可能明確地說它們是否相等,因為它們的值未定義。 NULL = NULL 的結果通常是 FALSE(或有時是 NULL,取決於上下文和系統設定)。

此行為源自於 ANSI SQL-92 標準。但是,了解 SQL Server 中 ansi_nulls 設定的影響至關重要。

ansi_nulls

的角色

ansi_nulls 設定決定 SQL Server 如何解釋 NULL 比較。

  • ansi_nulls ON(預設): 在此設定(預設)下,NULL = NULL 計算結果為 FALSE,與 ANSI SQL-92 標準保持一致。

  • ansi_nulls OFF: 使用此設置,NULL = NULL 的計算結果為 TRUE。此行為反映了許多其他程式語言中處理 NULL 的方式,其中它通常被認為是表示未定義狀態的特殊值。

範例:

以下程式碼片段示範了差異:

SET ANSI_NULLS OFF;

IF NULL = NULL
    PRINT 'TRUE';
ELSE
    PRINT 'FALSE';

SET ANSI_NULLS ON;

IF NULL = NULL
    PRINT 'TRUE';
ELSE
    PRINT 'FALSE';
登入後複製

使用ansi_nulls OFF,兩個IF語句都會印出「TRUE」。 對於 ansi_nulls ON,第一個 IF 語句將列印“FALSE”,而第二個

語句也將列印“FALSE”

ansi_nulls理解

設定和 NULL 比較固有的歧義對於編寫健全且無錯誤的 SQL Server 程式碼至關重要。 請務必注意查詢中如何處理 NULL,以避免意外結果。

以上是為什麼 NULL = NULL 在 SQL Server 中計算結果為 False?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

減少在Docker中使用MySQL內存的使用 減少在Docker中使用MySQL內存的使用 Mar 04, 2025 pm 03:52 PM

減少在Docker中使用MySQL內存的使用

如何使用Alter Table語句在MySQL中更改表? 如何使用Alter Table語句在MySQL中更改表? Mar 19, 2025 pm 03:51 PM

如何使用Alter Table語句在MySQL中更改表?

mysql無法打開共享庫怎麼解決 mysql無法打開共享庫怎麼解決 Mar 04, 2025 pm 04:01 PM

mysql無法打開共享庫怎麼解決

什麼是 SQLite?全面概述 什麼是 SQLite?全面概述 Mar 04, 2025 pm 03:55 PM

什麼是 SQLite?全面概述

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器) 在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器) Mar 04, 2025 pm 03:54 PM

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器)

在MacOS上運行多個MySQL版本:逐步指南 在MacOS上運行多個MySQL版本:逐步指南 Mar 04, 2025 pm 03:49 PM

在MacOS上運行多個MySQL版本:逐步指南

如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)? 如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)? Mar 18, 2025 pm 12:00 PM

如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)?

如何為MySQL連接配置SSL/TLS加密? 如何為MySQL連接配置SSL/TLS加密? Mar 18, 2025 pm 12:01 PM

如何為MySQL連接配置SSL/TLS加密?

See all articles