为什么我的存储过程查询返回额外的结果?
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'
。
修复存储过程声明中的长度参数。
我在存储过程中有以下查询:
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'
。
修复存储过程声明中的长度参数。