在 SQL Server 中,我似乎无法在 WHERE
中使用别名列名。条款
这不起作用
SELECT *, [dbo].[myFunc] (X.Prop1) AS Width
FROM X
WHERE Width > 0
我要做
SELECT *, [dbo].[myFunc] (X.Prop1) AS Width
FROM X
WHERE [dbo].[myFunc] (X.Prop1) > 0
我担心的是 SQL 正在执行
[dbo].[myFunc] (X.Prop1)
两次。我的问题是:
WHERE
中使用别名列?条款? 最佳答案
我不确定它是否计算了两次,但是您可以使用 CROSS APPLY
来避免这种情况。 :
SELECT *, Width
FROM X
CROSS APPLY (Select [dbo].[myFunc] (X.Prop1)) N(Width)
WHERE Width > 0
看这个 fiddle选择大于 10 的值的平方。
关于sql - 根据标量函数结果过滤 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30744748/