sql - 当使用“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%'
但我不能,因为关键字不是一个真正的列,它告诉我它不存在。
我该如何解决这个问题?谢谢
解决方案
您可以使用带有别名的派生表(此处)并通过过滤 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
运算符来代替 ,
推荐阅读
- flutter - 如何在颤动中制作具有圆边的按钮?
- winforms - 使用 WinForms 应用程序的 OAuth/OIDC SSO 的最佳实践?
- php - 不同目录中类文件的php错误日志
- terraform - 无法让 global_parameter 与 Terraform azurerm_data_factory 一起使用
- bash - 如何从长时间运行的命令中获取单行输入,然后将其杀死?
- javascript - 为什么删除特殊字符时不删除电报表情符号
- r - 如何以可以在 R markdown 中编织的方式将 sav 文件读入 r
- php - 如果消息文本上有句点,PHP Sendmail 会失败
- discord - 我在尝试制作我的不和谐机器人时遇到错误
- apache-spark - 事件中心流式处理使用 DataBricks 提高处理速度