我将从一个伪代码片段开始:
CASE
WHEN [very long expression] > 1 THEN 1
ELSE [very long expression]
END是否有可能避免重写整个表达式?
我已经尝试创建我自己的函数:
CREATE FUNCTION fn_isLargerThanOne(@v FLOAT)
RETURNS FLOAT
AS BEGIN
IF(@v > 1)
BEGIN
SET @v = 1
END
RETURN @v
END但是在我的查询中使用这个函数会把它从2减慢到11。有什么想法吗?
发布于 2019-06-12 16:45:03
使用子查询来计算要在case表达式中多次使用的值。
select
CASE
WHEN ComputedExpression > 1 THEN 1
ELSE ComputedExpression
END
from (
select *, [very long expression] ComputedExpression
from MyTable
) xhttps://stackoverflow.com/questions/56557877
复制相似问题