我使用别名来引用计算列。这是我尝试制作的实际代码的一部分,用于计算相似度并返回相似度得分为3或更高的匹配项。

select [FirstName], difference([FirstName], 'mitch') as similarity
from [Dev].[dbo].[Name]
where similarity > 2
order by similarity desc

异常消息:



由于相似性不是真正的专栏文章,我将如何进行这项工作?

最佳答案

列别名和计算在查询的投影(SELECT)阶段执行,该阶段在选择(WHEREJOIN)阶段之后发生。因此,不能在WHERE子句或JOIN条件中引用它们,因为它们尚不存在。您可以将查询与SELECT子句一起用作子查询,也可以在WHERE子句中重复计算:

select *

from
(select [FirstName], difference([FirstName], 'mitch') as similarity
from [Dev].[dbo].[Name]) src

where similarity > 2
order by similarity desc

要么
select [FirstName], difference([FirstName], 'mitch') as similarity
from [Dev].[dbo].[Name]
where difference([FirstName], 'mitch') > 2
order by similarity desc

关于sql - 计算列上的T-SQL列别名-无效的列名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6591183/

10-12 04:07