考虑以下查询:
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 ×1