私は周りを見回しましたが、SQL Server2008R2で奇妙な問題に遭遇したようです。
CONCAT_NULL_YIELDS_NULL = ONの場合、以下が常にNULLに解決されることを意味することを理解しています
SELECT NULL + 'My String'
私はそれに満足していますが、これをCOALESCE()と組み合わせて使用すると、データベースで機能していないように見えます。
MyStringがVARCHAR(2000)である次のクエリについて考えてみます。
SELECT COALESCE(MyString + ', ', '') FROM MyTableOfValues
私のクエリでは、MyStringがNULLの場合、空の(NOT NULL)文字列を返します。これはクエリ結果ウィンドウで確認できます。
ただし、非常に珍しいことに、これをINSERTと組み合わせて実行すると、代わりにCONCAT_NULL_YIELDS_NULLを認識できず、空白の'、'が挿入されます。
挿入のクエリは次のとおりです。
CONCAT_NULL_YIELDS_NULL ON
INSERT INTO Mytable(StringValue)
SELECT COALESCE(MyString + ', ', '')
FROM MyTableOfValues
これに加えて、データベースとCONCAT_NULL_YIELDS_NULL=TRUEもチェックしました…</p>