为什么我的存储过程查询返回额外的结果?

Why is my stored procedure query returning extra results?

我在存储过程中有以下查询:

CREATE PROCEDURE [s_Staff_ByLikeLastNmByLikeFirstNm]  
  
 @LastNm varchar(10),  
 @FirstNm varchar(10)
  
 /*WITH ENCRYPTION*/  
  
AS  
  
SET NOCOUNT ON  
SET TRANSACTION ISOLATION LEVEL READ COMMITTED  

SELECT
    Staff.FirstNm,
    Staff.LastNm
FROM
    Staff
WHERE
    Staff.LastNm LIKE @LastNm + '%'
    AND Staff.FirstNm LIKE @FirstNm + '%'

如果我在对@LastNm 的查询中输入'Christiansen',当我执行存储过程时,它将返回'Christiansen' 和'Christianson',并执行更多SOUNDEX 搜索.

我该如何解决这个问题?

如果我 运行 在存储过程之外执行 select,我会得到正确的结果。

'Christiansen' 有 12 个字符。

您已将存储过程的参数定义为长度为 10,因此该值被截断为 'Christians'

修复存储过程声明中的长度参数。