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

the*_*ude 1 sql sql-server stored-procedures soundex

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

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 + '%'
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能解决这个问题?

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

Gor*_*off 8

'Christiansen'里面有12个字符。

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

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