具有名字名称的搜索字符串的存储过程

时间:2012-10-27 07:46:18

标签: sql

我需要以名字开头的查询,这是我的查询:

if(@firstName <> '')

BEGIN 
 set @queryString = @queryString+ ' and UPPER(col_FirstName) like ''%' +@firstName +'%'''
END
if(@lastName <> '')
BEGIN 

set @queryString = @queryString + ' and UPPER(col_LastName) like ''%' +@lastName +'%'''

但它正在中间搜索名字,我也只想搜索首字母 谢谢

2 个答案:

答案 0 :(得分:0)

您可以在一个查询中执行此操作,而不是这些IF

...
WHERE ...
  AND (@lastName  <> '' OR UPPER(col_LastName LIKE '%@lastName%')
  AND (@firstName <> '' OR UPPER(col_FirstName LIKE '%@firstName%')

答案 1 :(得分:0)

构造条件中的两个掩码都指定在列值的任何位置执行搜索:

... + ' and UPPER(col_FirstName) like ''%' + @firstName + '%'''
...
... + ' and UPPER(col_LastName) like ''%' + @lastName + '%'''

掩码中的百分号代表“任意数量的任何字符”。因此,在搜索项之前放置它将匹配搜索项(@firstName)前面有任意数量字符的值。要指定col_FirstName开始且值为@firstName(之后可能有任意数量的字符),只需删除前导百分比,即: / p>

... + ' and UPPER(col_FirstName) like ''' + @firstName + '%'''