SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)
連結の結果を NULL と空文字列のどちらとして扱うかを制御します。
重要 |
---|
今後のバージョンの SQL Server では、CONCAT_NULL_YIELDS_NULL が常に ON になり、このオプションを明示的に OFF に設定するすべてのアプリケーションでエラーが発生します。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 |
構文
SET CONCAT_NULL_YIELDS_NULL { ON | OFF }
説明
SET CONCAT_NULL_YIELDS_NULL が ON の場合、NULL 値を文字列と連結すると、結果は NULL になります。たとえば、SELECT 'abc' + NULL の結果は NULL になります。SET CONCAT_NULL_YIELDS_NULL が OFF の場合、NULL 値を文字列と連結すると、結果は元の文字列になり、NULL 値は空文字列として扱われます。たとえば、SELECT 'abc' + NULL の結果は abc になります。
SET CONCAT_NULL_YIELDS を指定しなかった場合は、CONCAT_NULL_YIELDS_NULL データベース オプションの設定が適用されます。
注 |
---|
SET CONCAT_NULL_YIELDS_NULL は、ALTER DATABASE の CONCAT_NULL_YIELDS_NULL 設定と同じ設定です。 |
SET CONCAT_NULL_YIELDS_NULL は、解析時ではなく実行時に設定されます。
計算列やインデックス付きビューのインデックスを作成または変更するときには、SET CONCAT_NULL_YIELDS_NULL を ON に設定する必要があります。SET CONCAT_NULL_YIELDS_NULL が OFF の場合、計算列にインデックスが設定されているテーブルやインデックス付きビューにおける CREATE、UPDATE、INSERT、および DELETE のステートメントはいずれも失敗します。インデックス付きビューおよび計算列上のインデックスに必要な SET オプション設定の詳細については、「SET (Transact-SQL)」の「SET ステートメントの使用に関する留意事項」を参照してください。
CONCAT_NULL_YIELDS_NULL を OFF に設定した場合、複数のサーバーにまたがって文字列を連結することはできません。
例
次の例では、両方の SET CONCAT_NULL_YIELDS_NULL 設定を示します。
PRINT 'Setting CONCAT_NULL_YIELDS_NULL ON';
GO
-- SET CONCAT_NULL_YIELDS_NULL ON and testing.
SET CONCAT_NULL_YIELDS_NULL ON;
GO
SELECT 'abc' + NULL ;
GO
-- SET CONCAT_NULL_YIELDS_NULL OFF and testing.
SET CONCAT_NULL_YIELDS_NULL OFF;
GO
SELECT 'abc' + NULL;
GO