我使用别名来引用计算列。这是我尝试制作的实际代码的一部分,用于计算相似度并返回相似度得分为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
WHERE
JOIN
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