我想通过姓名和姓氏进行搜索,我使用此查询(SUR - 姓氏,NAM - 姓名
Declare @name varchar(30) = 'Joh' //part or full name/surname or both
SELECT (RTRIM(SUR) + ' ' + RTRIM(NAM)) AS name , W , SS FROM Table
WHERE name like '%' + @name + '%'
但我有错误
列名“name”无效。
我需要同时按2列进行搜索。这个
(SUR like '%' + @name + '%') or (NAM like '%' + @name + '%')
只给我搜索了一栏如下:搜索:琼斯和我看到约翰尼斯,但如果我想搜索约翰琼斯,我将没有结果。
帮助我同时按2列进行搜索。
答案 0 :(得分:4)
你不能在where子句中使用alias name
。您必须使用where clause
Declare @name varchar(30) = 'Surname'
SELECT (RTRIM(SUR) + ' ' + RTRIM(NAM)) AS name , W , SS FROM Table
WHERE (RTRIM(SUR) + ' ' + RTRIM(NAM)) like '%' + @name + '%'
答案 1 :(得分:0)
您也可以使用APPLY VALUES
来实现这一目标。
它不是最好的SQL设计,因为你无法利用索引。
Declare @name varchar(30) = 'Joh'; //part or full name/surname or both
SELECT
Fullname.name AS name ,
W ,
SS
FROM Table
OUTER APPLY(VALUES(RTRIM(SUR) + ' ' + RTRIM(NAM)) Fullname(name)
WHERE Fullname.name like '%' + @name + '%';