0

名で始まるクエリが必要です ここに私のクエリがあります:

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

途中で名前を検索していますが、イニシャルだけで検索したいのでよろしくお願いします

4

2 に答える 2

0

構築された条件の両方のマスクは、検索が列値の任意の場所で実行されることを指定します。

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

マスクのパーセント記号は、「任意の数の任意の文字」を表します。したがって、検索語の前に置くと、検索語 ( @firstName) の前に任意の数の文字がある値と一致します。col_FirstName値が値で始まるように指定するには(@firstNameその後に任意の数の文字が含まれる可能性があります)、先頭のパーセントを削除します。つまり、次のようにします。

... + ' and UPPER(col_FirstName) like ''' + @firstName + '%'''
于 2012-10-27T08:45:49.240 に答える
0

これらIFの s の代わりに、次のように 1 つのクエリで実行できます。

...
WHERE ...
  AND (@lastName  <> '' OR UPPER(col_LastName LIKE '%@lastName%')
  AND (@firstName <> '' OR UPPER(col_FirstName LIKE '%@firstName%')
于 2012-10-27T07:54:53.610 に答える