首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server -在WHERE子句中使用组合列

SQL Server -在WHERE子句中使用组合列
EN

Stack Overflow用户
提问于 2018-06-02 06:02:15
回答 2查看 59关注 0票数 0

我在WHERE子句中使用组合列时遇到了问题。我正在尝试组合两列,并执行a WHERE x IN (a,b,c)来过滤行。

以下是我的数据:

代码语言:javascript
复制
Tag      Param
------   -----
TI-123   LL
TI-123   LO
FI-321   LO
FI-321   BAD

这是我正在尝试的:

代码语言:javascript
复制
SELECT [Tag] + '.' + [Param] AS 'TagParam' 
   FROM Tags
   WHERE 'TagParam' IN ('TI-123.LL', 'TI-123.LO')

结果永远不会与WHERE子句匹配,总是出现空的结果。我可以将行分开,并使用带有许多and和OR的WHERE,但它更难阅读。我将在IN()语句中包含大约100个项目。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-02 06:05:01

您不能在相应的WHERE中使用在SELECT中定义的表别名。用单引号把东西括起来只会把问题搞混,把东西变成字符串常量。

重复该表达式:

代码语言:javascript
复制
SELECT ([Tag] + '.' + [Param]) AS TagParam
FROM Tags
WHERE ([Tag] + '.' + [Param]) IN ('TI-123.LL', 'TI-123.LO');

如果不想重复该表达式,可以使用子查询、CTE或横向联接( apply关键字)。但是你的表达式很简单。

票数 4
EN

Stack Overflow用户

发布于 2018-06-02 16:43:12

这就是我所写的

代码语言:javascript
复制
SELECT [Tag] + '.' + [Param] AS 'TagParam' 
FROM Tags
WHERE Tag = 'TI-123'
  AND Param IN ('LL', 'LO')

这使它成为sargable (可以使用索引)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50651471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档