当前位置: 首页 > 面试题库 >

计算列上的T-SQL列别名-无效的列名

冷俊健
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 正如您从上一篇文章中看到的那样,我是使用C#创建网站的新手(尽管我有相当的经验将其用于Windows Forms应用程序)。强大的功能使我远离PHP,但是我一直在失败,因为我认为这是基础知识。 无论如何,这是我的问题。我正在尝试创建一个到SQL数据库的简单条目。我知道我与数据库的连接很好,因为我可以整天取消SELECT查询,但是在使用Insert时遇到了麻烦。 这是我的代码: 这导致从

  • 问题内容: 计算在查询中声明的两个临时列名称的sum()-在SQL中 表只有两列。将total和total1作为临时名称给出。 如何计算作为与列名声明为临时名称为查询执行。 使用cte不支持重复的列名吗? 如何利用它来支持重复的列名 问题答案: 您不能直接做到这一点-您需要使用CTE(公用表表达式)之类的东西-像这样: 它在SQL Server 2005和更高版本(以及支持CTE(这是ANSI标准

  • 问题内容: 我有一个JSP文件,我将在Eclipse,Maven和Tomcat的帮助下将其部署在Java项目中。我还有一些其他的JSP文件与此文件几乎相同,尽管它们运行不同的操作。无论如何,当我转到页面时,我已经给出了: Bug是一个自定义类,可以接受结果集--并执行以下操作: 其中BUG_ID,PERSON_OPENED_BY,PERSON_ASSIGNED_TO,TITLE和PROJECT_I

  • 问题内容: 我正在尝试执行以下动态查询,但出现错误:无效的列名’cat’ 如果我将其更改为普通查询,则可以: 任何人都可以指出我的错误吗?谢谢。 问题答案: 由于是varchar,因此需要在其周围包含单引号,并且需要在sql字符串内放置该子句的右括号。 新的代码将是: 查看打印了查询字符串的SQL Fiddle演示 。这将生成一个查询字符串,如下所示:

  • 问题内容: 我创建了一个存储过程,我想在其中添加替代的order by子句。问题是查询在“无效的列名’aantal regels’”上失败 这是我现在的查询。 希望有人可以帮助我! 问题答案: 您不能以这种方式按别名排序。 第一种选择是重复代码。注意:仅仅因为重复代码,SQL引擎就不会天真地再次执行它,而是重用了结果。 或全部使用子查询…

  • 当JdbcPagingItemReader查询具有联接和别名时,Spring批处理步骤失败。当我删除连接并从employee表中进行简单查询时,它可以正常工作。下面是失败的代码片段。有人遇到过这样的问题吗?任何帮助都将不胜感激。 spring-batch-core-4.0.1。发布spring-boot-2.0.0。释放 原因:java。sql。SQLException:oracle中的列名无效。