这是 SQL Server 2005 中包含计算列的表:
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
这在几天前有效,并且已经工作了一年多。
然后昨天,我在使用没有的值插入或更新时开始收到此错误identifier
no [
,当预期结果为 NULL 时:
Invalid length parameter passed to the left function.
现在,今天,它又开始工作了。
如果不正确,为什么 SQL Server 会尝试解决该LEFT()
函数?CASE
更重要的是,为什么它在一天工作而不是下一天工作?
我昨天还创建了一些索引视图,尽管没有涵盖这些列中的任何一个。索引视图所需的 SET 选项之一是否会导致数据库开始为这样的表达式抛出错误?