我需要以名字开头的查询,这是我的查询:
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 +'%'''
但它正在中间搜索名字,我也只想搜索首字母 谢谢
答案 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 + '%'''