第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是“= null”和“IS NULL”

什么是“= null”和“IS NULL”

月關(guān)寶盒 2019-08-28 10:28:57
什么是“= null”和“IS NULL”“= null”和“IS NULL”有什么區(qū)別?他們?nèi)绾问褂貌煌姆绞剑?
查看完整描述

3 回答

?
慕勒3428872

TA貢獻1848條經(jīng)驗 獲得超6個贊

在一個WHERE子句中,column=null永遠不會是真的,這種方式使用null是無效的,你需要說column IS NULL或者column IS NOT NULL。這說明了它的特殊性NULL,它不是檢查相等性的值,它是一個未知值,所以你需要使用ISIS NOT語法。

您可以NULL使用=相等的值分配值。例如:UPDATE TableX SET Column=NULL...


查看完整回答
反對 回復 2019-08-28
?
縹緲止盈

TA貢獻2041條經(jīng)驗 獲得超4個贊

“= NULL”是值的表達式現(xiàn)在,“IS NULL” 是用于評估變量條件為NULL的首選方法。

有關(guān)同一問題的更詳細討論可在以下鏈接中找到

http://www.sqlservercentral.com/articles/T-SQL/understandingthedifferencebetweenisnull/871/

不確定是否可以在不登錄網(wǎng)站的情況下閱讀文章,因此在此處發(fā)布相同的復制內(nèi)容

理解“IS NULL”和“= NULL”之間的區(qū)別

當使用declare語句在SQL中創(chuàng)建變量時,它將在沒有數(shù)據(jù)的情況下創(chuàng)建,并存儲在SQLs內(nèi)存空間內(nèi)的變量表(vtable)中。vtable包含變量的名稱和內(nèi)存地址。但是,當創(chuàng)建變量時,沒有為變量分配內(nèi)存地址,因此變量不是根據(jù)內(nèi)存定義的。

設(shè)置變量時,會分配一個存儲器地址,初始數(shù)據(jù)存儲在該地址中。再次設(shè)置該值時,變量指向的內(nèi)存地址中的數(shù)據(jù)將更改為新值。

現(xiàn)在為了區(qū)別,為什么每個人的行為方式都如此。

“= NULL”

“= NULL”是值的表達式。意思是,如果已設(shè)置變量并為存儲數(shù)據(jù)創(chuàng)建了內(nèi)存,則它具有值。事實上,變量可以設(shè)置為NULL,這意味著對象的數(shù)據(jù)值是未知的。如果值設(shè)置如下:

DECLARE @val CHAR(4)SET @val = NULL

您已明確將數(shù)據(jù)值設(shè)置為unknown,因此當您執(zhí)行以下操作時:

If @val = NULL

它將作為一個真實的表達來評估。

但如果我這樣做:

DECLARE @val CHAR(4)If @val =  NULL

它會評估為假。

原因是我正在檢查NULL作為@val的值。由于我沒有設(shè)置@val的值,因此沒有分配內(nèi)存地址,因此@val沒有值。

注意:請參閱有關(guān)SET ANSI_NULLS(ON | OFF)的部分,因為SQL 7和2000默認值的差異會導致示例無效。這基于SQL 7。

“一片空白”

現(xiàn)在“IS NULL”有點棘手,是評估變量條件為NULL的首選方法。當您使用“IS NULL”子句時,它會檢查變量的地址和變量中的數(shù)據(jù)是否為未知。所以如果我做的話:

DECLARE @val CHAR(4)If @val IS NULL

            PRINT ‘TRUE’ELSE

            PRINT ‘FALSE’SET @val = NULLIf @val IS NULL

            PRINT ‘TRUE’ELSE

            PRINT ‘FALSE’

兩個輸出都為TRUE。原因是在第一個@val IS NULL我只聲明了變量并且沒有設(shè)置數(shù)據(jù)的地址空間,其中“IS NULL”檢查。在第二個中,值已顯式設(shè)置為NULL,“IS NULL”也檢查。

SET ANSI_NULLS(ON | OFF)

現(xiàn)在讓我在工作中拋出一個扭結(jié)。在前面的示例中,您會看到= NULL只要顯式設(shè)置值就可以工作。但是,當您設(shè)置ANSI_NULLS ON時,事情會有所不同。

防爆。

DECLARE @val CHAR(4)SET @val = NULLSET ANSI_NULLS ONIf @val =NULL

            PRINT ‘TRUE’ELSE

            PRINT ‘FALSE’SET ANSI_NULLS OFFIf @val =NULL

            PRINT ‘TRUE’ELSE

            PRINT ‘FALSE’

您將注意到在執(zhí)行SET ANSI_NULLS ON后第一次運行= NULL語句時,您得到一個FALSE,在設(shè)置為OFF后,您得到一個TRUE。原因如下。

摘自SQL BOL文章“SET ANSI_NULLS”

SQL-92標準要求等于(=)或不等于(<>)與空值的比較計算為FALSE。當SET ANSI_NULLS為ON時,即使column_name中存在空值,使用WHERE column_name = NULL的SELECT語句也會返回零行。使用WHERE column_name <> NULL的SELECT語句返回零行,即使column_name中存在非空值也是如此。

當SET ANSI_NULLS為OFF時,Equals(=)和Not Equal To(<>)比較運算符不遵循SQL-92標準。使用WHERE column_name = NULL的SELECT語句返回column_name中具有空值的行。使用WHERE column_name <> NULL的SELECT語句返回列中包含非空值的行。此外,使用WHERE column_name <> XYZ_value的SELECT語句將返回非XYZ值且不為NULL的所有行。

結(jié)束摘錄

因此,如SQL92所定義,“= NULL”應(yīng)始終評估為false。因此,即使明確設(shè)置值,也意味著如果條件和代碼可能無法正常工作,您將永遠不會滿足= NULL。= NULL的最大原因是你會在腳下射擊,SQL 7在發(fā)貨和安裝時默認為ANSI_NULL OFF,但SQL 2000默認為ANSI_NULL ON。當然你可以改變這幾種方法,但是如果你將數(shù)據(jù)庫從7升級到2000并且發(fā)現(xiàn)= NULL只有當你在推出默認的2000服務(wù)器時顯式設(shè)置時你的代碼現(xiàn)在中斷并且可能導致數(shù)據(jù)問題。

使用IS NULL的另一個原因是,根據(jù)SQL 92指南,它仍將評估為TRUE,因此您的代碼更安全地升級服務(wù)器。

摘要

如果除非您需要檢查變量的值是否設(shè)置為NULL并且您已將ANSI_NULLS設(shè)置為ON,那么總是使用“IS NULL”子句來驗證變量是否為NULL。通過使用= NULL,您可能會在嘗試解決可能由此產(chǎn)生的問題(現(xiàn)在或?qū)硪馔獾兀r遇到很多麻煩。

基礎(chǔ)

提供的一些信息來自C ++的工作原理以及SQL在每種情況下的行為方式。不幸的是,據(jù)我所知,SQL沒有一個函數(shù)地址,允許我輸出實際的內(nèi)存地址來顯示引擎蓋下發(fā)生的事情。在C ++中,當創(chuàng)建變量時,變量的地址為0xddddddd(在調(diào)試中,但它也可以是不同的非實地址)。設(shè)置變量時,第一次檢查地址將為您提供存儲數(shù)據(jù)的有效內(nèi)存地址。此外,可以從SQL Books Online的IS NULL和SET ANSI_NULLS ...部分獲取更多信息。


查看完整回答
反對 回復 2019-08-28
?
ABOUTYOU

TA貢獻1812條經(jīng)驗 獲得超5個贊

= NULL用于賦值給NULL值,而IS NULL用于確定變量是否為NULL值。

sssignment為NULL的示例:

Update TableName Set ColumnName = NULL

與條件子句(鏈接)中的NULL值進行比較的示例:

Select * From TableName Where ColumnName is NULL

ColumnName IS NOT Null 也可用于確保值為非NULL。


查看完整回答
反對 回復 2019-08-28
  • 3 回答
  • 0 關(guān)注
  • 1194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號