无需重写整个语句的 CASE-WHEN 条件

CASE-WHEN condition without rewriting the whole statement

我将从一个伪代码片段开始:

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 秒。 有什么想法吗?

使用 sub-query 计算要在 case 表达式中多次使用的值,例如

select
  CASE
    WHEN ComputedExpression > 1 THEN 1
    ELSE ComputedExpression
  END
from (
  select *, [very long expression] ComputedExpression
  from MyTable
) x