SQLServer2005の計算列の表は次のとおりです。
CREATE TABLE footable AS
[identifier] nvarchar(255) NOT NULL,
[result] AS CASE
WHEN [identifier] like '%\[%]' escape '\'
THEN LEFT( [identifier], CHARINDEX('[',[identifier]) - 1 )
END
これが私が期待していることです:
identifier result
======================
foo[bar] foo
foo NULL
これは数日前に機能し、1年以上機能しています。
それから昨日、NULLが期待される結果になるときに、identifier
がない値を挿入または更新すると、このエラーが発生し始めました。[
Invalid length parameter passed to the left function.
さて、今日、それは再び働いています。
が真でないのに、SQL ServerがLEFT()
関数を解決しようとするのはなぜですか?CASE
さらに重要なのは、なぜそれが次の日ではなく、ある日機能しているのでしょうか。
昨日、これらの列のどちらもカバーしていませんでしたが、いくつかのインデックス付きビューを作成していました。ビューのインデックス作成に必要なSETオプションの1つにより、データベースがこのような式のエラーをスローし始める可能性がありますか?