我使用别名来引用计算列。这是我尝试制作的实际代码的一部分,用于计算相似度并返回相似度得分为3或更高的匹配项。
select [FirstName], difference([FirstName], 'mitch') as similarity
from [Dev].[dbo].[Name]
where similarity > 2
order by similarity desc
异常消息:
由于相似性不是真正的专栏文章,我将如何进行这项工作?
最佳答案
列别名和计算在查询的投影(SELECT
)阶段执行,该阶段在选择(WHERE
和JOIN
)阶段之后发生。因此,不能在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/