は、null値で使用される場合のEquals(=)およびNot Equal to(<>)比較演算子のSQL-92準拠の動作を指定します。
構文
SET ANSI_NULLS{ON|OFF}
備考
SQL-92標準では、null値に対するequals(=)またはnot equal to(<>)の比較はFALSEと評価されます。 SET ANSI_NULLSがONの場合、WHERE column_name=NULLを使用したSELECT文は、column_nameにnull値があってもゼロ行を返します。 WHERE column_name<>NULLを使用したSELECT文は、column_nameにnull以外の値があってもゼロ行を返します。SET ANSI_NULLSがOFFの場合、等号(=)およびNot Equal To(<>)比較演算子はSQL-92標準に準拠していません。 WHERE column_name=NULLを使用したSELECT文は、column_nameにnull値を持つ行を返します。 WHERE column_name<>NULLを使用したSELECT文は、列内にnull以外の値を持つ行を返します。 さらに、WHERE column_name<>Xyz_Valueを使用したSELECT文は、XYZ値ではなくNULLではないすべての行を返します。
メモMicrosoft®SQL Server™が空の文字列を単一のスペースまたは真の空の文字列として解釈するかどうかは、sp_dbcmptlevelの互換性レベル設定によって制御されます。 互換性レベルが65以下の場合、SQL Serverは空の文字列を単一のスペースとして解釈します。 互換性レベルが70に等しい場合、SQL Serverは空の文字列を空の文字列として解釈します。 詳細については、”sp_dbcmptlevel”を参照してください。
SET ANSI_NULLSがONの場合、null値に対するすべての比較はUNKNOWNと評価されます。 SET ANSI_NULLSがOFFの場合、データ値がNULLの場合、null値に対するすべてのデータの比較はTRUEと評価されます。 指定しない場合は、現在のデータベースのANSI nullsオプションの設定が適用されます。 ANSI nullsデータベースオプションの詳細については、”sp_dboption”および”データベースオプションの設定”を参照してください。
スクリプトを意図したとおりに動作させるには、ANSI nullsデータベースオプションまたはSET ANSI_NULLSの設定に関係なく、null値を含む可能性のある比較でIS NULLおよびIS NOT NULL
ストアドプロシージャの場合、SQL Serverでは、ストアドプロシージャの最初の作成時のSET ANSI_NULLS設定値が使用されます。 その後、ストアドプロシージャが実行されるたびに、SET ANSI_NULLSの設定が元の使用値に復元され、有効になります。 ストアドプロシージャ内で呼び出された場合、SET ANSI_NULLSの設定は変更されません。
分散クエリを実行するには、ANSI_NULLSをONに設定する必要があります。
SET ANSI_NULLSは、計算列またはインデックス付きビューのインデックスを作成または操作するときにもONにする必要があります。 SET ANSI_NULLSがOFFの場合、計算列またはインデックス付きビューにインデックスがあるテーブルのCREATE、UPDATE、INSERT、およびDELETEステートメントは失敗します。 SQL Serverは、必要な値に違反するすべてのSETオプションを一覧表示するエラーを返します。 また、SELECTステートメントを実行するときに、SET ANSI_NULLSがOFFの場合、SQL Serverは計算列またはビューのインデックス値を無視し、テーブルまたはビューにそのようなイン
注ANSI_NULLSは、計算列またはインデックス付きビューのインデックスを処理するときに必要な値に設定する必要がある七つのSETオプションのいずれかです。 オプションANSI_PADDING、ANSI_WARNINGS、ARITHABORT、QUOTED_IDENTIFIER、およびCONCAT_NULL_YIELDS_NULLもONに設定する必要がありますが、NUMERIC_ROUNDABORTはOFFに設定する必要があります。
SQL Server ODBCドライバとMicrosoft OLE DB Provider for SQL Serverは、接続時に自動的にANSI_NULLSをONに設定します。 この設定は、ODBCデータソース、ODBC接続属性、またはSQL Serverに接続する前にアプリケーションで設定されているOLE DB接続プロパティで構成できます。 DB-Libraryアプリケーションからの接続の場合、ANSI_NULLSのデフォルトをOFFに設定します。
SET ANSI_DEFAULTSがオンの場合、SET ANSI_NULLSが有効になります。
SET ANSI_NULLSの設定は、解析時ではなく、実行時または実行時に設定されます。
Permissions
ANSI_NULLS permissionsのデフォルトをすべてのユーザーに設定します。
例
この例では、Equals(=)とNot Equal To(<>)の比較演算子を使用して、テーブル内のNULL値とnull以外の値との比較を行います。 この例では、IS NULLがSET ANSI_NULLS設定の影響を受けないことも示しています。
も参照してください
=(Equals)
IF…その他
<> (に等しくない)
SET
SET ANSI_DEFAULTS
WHERE
WHILE