首页 > 解决方案 > 当使用“SELECT varname = something + something 等时,我不能再做”WHERE varname = ...”

问题描述

我有:

 SELECT KEYWORDS = CAST(USRN AS VARCHAR(15)) + ' ' + 
 RTRIM(SD) + ' ' + RTRIM(NL.LOCALITY_NAME) + ' ' + 
 RTRIM(NT.TOWN_NAME) + ' ' + RTRIM(NA.AUTHORITY_NAME)

这给了我看起来像一列的东西,但不是:

在此处输入图像描述

我想要它,所以我的代码只从 KEYWORDS 中选择与用户输入的内容匹配的行。通常,如果 KEYWORDS 是一列,我会写:

SELECT .... WHERE KEYWORDS = '%whateverTheUserIsTyping%'

但我不能,因为关键字不是一个真正的列,它告诉我它不存在。

我该如何解决这个问题?谢谢

标签: sqlcastingcommand

解决方案


您可以使用带有别名的派生表(此处)并通过过滤 in子句Q从中获取结果:WHERE

SELECT Q.KEYWORDS FROM (
 SELECT KEYWORDS = CAST(USRN AS VARCHAR(15)) + ' ' + 
   RTRIM(STREET_DESCRIPTOR) + ' ' + RTRIM(NSG_LOCALITY.LOCALITY_NAME) + ' ' + 
   RTRIM(NSG_TOWN.TOWN_NAME) + ' ' + RTRIM(NSG_AUTHORITY.AUTHORITY_NAME)
 ) AS Q
WHERE Q.KEYWORDS LIKE '%whateverTheUserIsTyping%'

因为您不能WHERE像您提到的那样在子句中使用列别名。KEYWORDS = '%whateverTheUserIsTyping%'您也可以使用LIKE运算符来代替 ,


推荐阅读