创建sql数据名称

时间:2015-06-26 13:55:15

标签: sql sql-server sql-server-2012

我想通过姓名和姓氏进行搜索,我使用此查询(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列进行搜索。

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 + '%';