小编mon*_*ine的帖子

从 CROSS APPLY 返回的列是否只计算一次表值函数?

考虑以下查询:

select Student.Id,
       case when SomeTvfResult.Num = 3 then N'foo'
            when SomeTvfResult.Num > 42 then N'bar'
            else N'baz'
       end as SomeStr
from Student
cross apply SomeTableValuedFunction(Student.Id) SomeTvfResult
Run Code Online (Sandbox Code Playgroud)

我想知道SomeTvfResult.Num每次我在case语句中引用它时是否都会重新计算它的值,或者它以某种方式缓存并仅评估一次。如果相关,您可以假设它SomeTableValuedFunction是内联 TVF。

由于我已经了解到它coalesce只是被一个case语句替换了,该语句导致给定的表达式被评估不止一次,因此每次我在查询中使用某个函数时,我都会感到担忧。

sql-server

2
推荐指数
1
解决办法
78
查看次数

标签 统计

sql-server ×1