亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關(guān)軟件
    >SET ANSI_NULLS 創(chuàng)建者:webmaster 更新時(shí)間:2006-02-16 15:51

    指定在對(duì)空值使用等于 (=) 和不等于 (<>) 比較運(yùn)算符時(shí),這些運(yùn)算符的 SQL-92 遵從行為。



    語(yǔ)法


    SET ANSI_NULLS {ON | OFF}



    注釋


    SQL-92 標(biāo)準(zhǔn)要求對(duì)空值的等于 (=) 或不等于 (<>) 比較取值為 FALSE。當(dāng) SET ANSI_NULLS 為 ON 時(shí),即使 column_name 中存在空值,使用 WHERE column_name = NULL 的 SELECT 語(yǔ)句仍返回零行。即使 column_name 中存在非空值,使用 WHERE column_name <> NULL 的 SELECT 語(yǔ)句仍返回零行。



    當(dāng) SET ANSI_NULLS 為 OFF 時(shí),等于 (=) 和不等于 (<>) 比較運(yùn)算符不遵從 SQL-92 標(biāo)準(zhǔn)。使用 WHERE column_name = NULL 的 SELECT 語(yǔ)句返回 column_name 中含有空值的行。使用 WHERE column_name <> NULL 的 SELECT 語(yǔ)句返回列中含有非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 語(yǔ)句返回所有非 XYZ 值和非 NULL的行。



    說(shuō)明  Microsoft® SQL Server™ 是將空字符串解釋為單個(gè)空格還是真正的空字符串,取決于 sp_dbcmptlevel 的兼容級(jí)別設(shè)置。如果兼容級(jí)別小于或等于 65,SQL Server 就將空字符串解釋為單個(gè)空格。如果兼容級(jí)別等于 70,則 SQL Server 將空字符串解釋為空字符串。有關(guān)更多信息,請(qǐng)參見(jiàn) sp_dbcmptlevel。



    當(dāng) SET ANSI_NULLS 為 ON 時(shí),所有對(duì)空值的比較均取值為 UNKNOWN。當(dāng) SET ANSI_NULLS 為 OFF 時(shí),如果數(shù)據(jù)值是 NULL,則所有數(shù)據(jù)對(duì)空值的比較將取值為 TRUE。如果未指定,則應(yīng)用當(dāng)前數(shù)據(jù)庫(kù)的 ANSI nulls 選項(xiàng)的設(shè)置。有關(guān) ANSI nulls 數(shù)據(jù)庫(kù)選項(xiàng)的更多信息,請(qǐng)參見(jiàn) sp_dboption設(shè)置數(shù)據(jù)庫(kù)選項(xiàng)



    為使腳本按預(yù)期運(yùn)行,不管 ANSI nulls 數(shù)據(jù)庫(kù)選項(xiàng)或 SET ANSI_NULLS 的設(shè)置是什么,在可能包含空值的比較中使用 IS NULL 和 IS NOT NULL。



    對(duì)于存儲(chǔ)過(guò)程,SQL Server 使用最初創(chuàng)建存儲(chǔ)過(guò)程時(shí)的 SET ANSI_NULLS 設(shè)置值。無(wú)論隨后何時(shí)執(zhí)行存儲(chǔ)過(guò)程,SET ANSI_NULLS 的設(shè)置都還原為其最初使用的值并生效。當(dāng)在存儲(chǔ)過(guò)程內(nèi)喚醒調(diào)用 SET ANSI_NULLS 時(shí),其設(shè)置不更改。



    在執(zhí)行分布式查詢時(shí)應(yīng)將 SET ANSI_NULLS 設(shè)置為 ON。



    在計(jì)算列或索引視圖上創(chuàng)建或操作索引時(shí),SET ANSI_NULLS 也必須為 ON。如果 SET ANSI_NULLS 為 OFF,計(jì)算列或索引視圖上帶索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 語(yǔ)句將失敗。SQL Server 將返回一個(gè)錯(cuò)誤,列出所有違反所需值的 SET 選項(xiàng)。另外,在執(zhí)行 SELECT 語(yǔ)句時(shí),如果 SET ANSI_NULLS 為 OFF,則 SQL Server 將忽略計(jì)算列或視圖上的索引值并解析選擇,就好象表或視圖上沒(méi)有這樣的索引一樣。



    說(shuō)明  ANSI_NULLS 是在處理計(jì)算列或索引視圖上的索引時(shí)必須設(shè)置為所需值的七個(gè) SET 選項(xiàng)之一。還必須將選項(xiàng) ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、QUOTED_IDENTIFIER 和 CONCAT_NULL_YIELDS_NULL 設(shè)置為 ON,而必須將 NUMERIC_ROUNDABORT 設(shè)置為 OFF。



    SQL Server ODBC 驅(qū)動(dòng)程序和用于 SQL Server 的 Microsoft OLE DB 提供程序在連接時(shí)自動(dòng)將 ANSI_NULLS 設(shè)置為 ON。該設(shè)置可以在 ODBC 數(shù)據(jù)源、ODBC 連接特性或 OLE DB 連接屬性(它們?cè)谶B接到 SQL Server 之前在應(yīng)用程序中設(shè)置)中進(jìn)行配置。對(duì)來(lái)自 DB-Library 應(yīng)用程序的連接,SET ANSI_NULLS 默認(rèn)為 OFF。



    當(dāng) SET ANSI_DEFAULTS 為 ON 時(shí),將啟用 SET ANSI_NULLS。



    SET ANSI_NULLS 的設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。



    權(quán)限


    SET ANSI_NULLS 權(quán)限默認(rèn)授予所有用戶。



    示例


    下例使用等于 (=) 和不等于 (<>) 比較運(yùn)算符對(duì)表中的 NULL 值和非空值進(jìn)行比較。下例還顯示 IS NULL 不受 SET ANSI_NULLS 設(shè)置的影響。



    -- Create table t1 and insert values.
    CREATE TABLE t1 (a int null)
    INSERT INTO t1 values (NULL)
    INSERT INTO t1 values (0)
    INSERT INTO t1 values (1)
    GO
    -- Print message and perform SELECT statements.
    PRINT 'Testing default setting'
    DECLARE @varname int
    SELECT @varname = NULL
    SELECT *
    FROM t1
    WHERE a = @varname
    SELECT *
    FROM t1
    WHERE a <> @varname
    SELECT *
    FROM t1
    WHERE a IS NULL
    GO
    -- SET ANSI_NULLS to ON and test.
    PRINT 'Testing ANSI_NULLS ON'
    SET ANSI_NULLS ON
    GO
    DECLARE @varname int
    SELECT @varname = NULL
    SELECT *
    FROM t1
    WHERE a = @varname
    SELECT *
    FROM t1
    WHERE a <> @varname
    SELECT *
    FROM t1
    WHERE a IS NULL
    GO
    -- SET ANSI_NULLS to OFF and test.
    PRINT 'Testing SET ANSI_NULLS OFF'
    SET ANSI_NULLS OFF
    GO
    DECLARE @varname int
    SELECT @varname = NULL
    SELECT *
    FROM t1
    WHERE a = @varname
    SELECT *
    FROM t1
    WHERE a <> @varname
    SELECT *
    FROM t1
    WHERE a IS NULL
    GO
    -- Drop table t1.
    DROP TABLE t1
    GO
    相關(guān)文章
    本頁(yè)查看次數(shù):