Sql server SQL Server:连接列并将该值用于IN语句

Sql server SQL Server:连接列并将该值用于IN语句,sql-server,Sql Server,我有一个连接FirstName和LastName的查询。在连接之后,我希望能够针对该值运行in语句。也许已经过了我的就寝时间,但我想不出写这封信的正确方法 示例查询 SELECT FirstName + ' ' + LastName AS fullName FROM [my].[dbo].[dbOfNames] WHERE fullName IN ('John Smith', 'Mike Apple', 'Bob Burger') 我不确定我在这里错过了什么。是否

我有一个连接
FirstName
LastName
的查询。在连接之后,我希望能够针对该值运行in语句。也许已经过了我的就寝时间,但我想不出写这封信的正确方法

示例查询

SELECT 
    FirstName + ' ' + LastName AS fullName
FROM 
    [my].[dbo].[dbOfNames] 
WHERE
    fullName IN ('John Smith', 'Mike Apple', 'Bob Burger')
我不确定我在这里错过了什么。是否有一种方法可以完成连接,然后对照in语句检查该值,或者我的做法是错误的?

我认为您需要

SELECT FirstName + ' ' + LastName as fullName 
FROM [my].[dbo].[dbOfNames] where FirstName + ' ' + LastName
 in ('John Smith', 'Mike Apple', 'Bob Burger')
您可以首先使用来投影连接的全名,这样就可以对派生列进行进一步的操作和筛选,而无需重复连接操作:

WITH cteFullName as 
(
    SELECT FirstName + ' ' + LastName as fullName 
    FROM [my].[dbo].[dbOfNames] 
)
SELECT fullName
  FROM cteFullName
  WHERE fullName IN ('John Smith', 'Mike Apple', 'Bob Burger');
另一种替代方法(与IMO不同)是使用派生表:

SELECT fullName
  FROM 
  ( 
     SELECT FirstName + ' ' + LastName as fullName 
     FROM [my].[dbo].[dbOfNames] 
  ) AS derivedFullName
  WHERE fullName IN ('John Smith', 'Mike Apple', 'Bob Burger');

引用你的字符串<代码>'John Smith'哈哈,很抱歉,是的,我的查询引用了Strings,你也可以在中使用
左侧的完整表达式。就是这样。非常有帮助!