0

テーブル変数があり、そのすべての列をnullにすることはできません(それぞれのNOT NULL定義):

DECLARE @SampleTable 
(
   ,SampleColumnID nvarchar(400) NOT NULL PRIMARY KEY
   ,SampleColumnText nvarchar(max) NOT NULL
)

この変数を使用して何らかの操作を行い、「SampleColumnText」をテキストで初期化しました。

次に、その一部を他の関数からのテキスト戻り値に置き換えようとします。場合によっては、関数が NULL を返すため、このコードでエラーが発生します。

REPLACE(SampleColumnText , '{*}', @InitByFunctionText)

今回は WHERE @InitByFunctionText が NULL です。

では、テキスト全体ではなく、テキストの一部のみを NULL に置き換えているため、生成されるのは通常のエラーですか?

4

2 に答える 2

2

最近同様のことがあり、次のようにしてこの問題を回避しました。

REPLACE(SampleColumnText , '{*}', ISNULL(@InitByFunctionText, ''))
于 2012-08-06T07:23:27.120 に答える
2

これは予期される動作です。REPLACE:

NULL引数のいずれかが である場合に返しますNULL

空の文字列 ( とは異なります) に置き換えたい場合は、NULL次を使用できますCOALESCE

REPLACE(SampleColumnText , '{*}', COALESCE(@InitByFunctionText,''))
于 2012-08-06T07:23:59.980 に答える