我有一个包含First Name和Last Name列的表以及一个ID为PK的表。我的WHERE条件是对FullName的搜索操作,而不是单独的。
选择
select ID, FirstName + ' ' + LastName as FullName
from tbl_Employee
我想要的是什么:
select ID, FirstName + ' ' + LastName as FullName
from tbl_Employee
where FullName like ''%' + @searchText + '%''
但是当我尝试使用别名FullName时,它不允许我这样做。我该如何处理这个问题?
答案 0 :(得分:2)
您可以通过几种不同的方式构建查询。一,在where
子句中包含concatenataion:
select
e.ID,
e.FirstName + ' ' + e.LastName as FullName
from tbl_Employee as e
where e.FirstName + ' ' + e.LastName like '%' + @searchText + '%';
二,使用@lajja显示的子选择。
三,将其设置为非递归CTE。我觉得这个表格最容易阅读和理解:
;with EmployeeFullName as
(
select
e.ID,
e.FirstName + ' ' + e.LastName as FullName
from tbl_Employee as e
)
select
f.ID,
f.FullName
from EmployeeFullName as f
where f.FullName like '%' + @searchText + '%';
请注意:a)使用前导通配符和b)连接列,您将阻止优化器使用FirstName
或LastName
上的任何索引。
答案 1 :(得分:0)
请参考以下答案:
select Employee.* from (Select ID, FirstName + ' ' + LastName as FullName from tbl_Employee ) as Employee
where Employee.FullName like ''%' + @searchText + '%''
答案 2 :(得分:0)
你可以这样做
select ID, FirstName + ' ' + LastName as FullName
from tbl_Employee
where (FirstName + ' ' + LastName) like '''%' + @searchText + '%'''