需要SQL Server 2008建议中的LIKE函数

时间:2010-07-21 12:16:35

标签: sql-server tsql sql-server-2008

我有一个表Customer,有2列Name和Surname(sql Server 2008)。用户想要按Name-Surname搜索 - 或者只是输入Jo Bloggs。假设一行填充

CustomerId        Name    Surname
1                 Jo      Bloggs

select * from customer where Name like '%Jo%'             will find the records
select * from customer where Surname like '%Bloggs%'      will find the records

但是,如果用户同时输入姓名和姓氏,例如Jo Bloggs,我如何让它返回记录?

4 个答案:

答案 0 :(得分:4)

您还可以创建计算列并搜索:

ALTER TABLE dbo.customer
   ADD FullName as Name + ' ' + Surname PERSISTED

现在,您的FullName表格中有一个额外的列customer,该列始终是最新的,您可以搜索:

SELECT (list of fields) FROM dbo.customer 
  WHERE Fullname = 'Jo Bloggs'

由于它是一个持久的计算列,你甚至可以在其上放一个索引以更快地进行精确搜索

答案 1 :(得分:3)

select * from customer where Name like '%Jo%' and Surname like '%Bloggs%'   

答案 2 :(得分:3)

无论用户输入名字,姓氏还是两者,都应该有效。

SELECT *
FROM customer cus
WHERE ((cus.Name like @FirstName) OR (@FirstName IS NULL)) AND
      ((cus.Surname like @Surname) OR (@Surname IS NULL))

我使用了两个变量,因为强烈建议不要将输入值输入到SQL字符串中,因为它会暴露给SQL注入(而不是慢速)。

答案 3 :(得分:0)

select * from customer where Name like '%Jo%'             
union
select * from customer where Surname like '%Bloggs%'