テーブルの従業員から従業員を検索するストアドプロシージャを作成しようとしています。SQL検索クエリで正しい結果が表示されない
私のクエリは、プロシージャが正常にコンパイルされ、この
ALTER PROCEDURE [dbo].[EmployeeList]
@CurrentPageNo INT = null,
@PageSize INT = 5,
@FirstName VARCHAR(100),
@Email VARCHAR(100),
@DeptId int = null
AS
BEGIN
DECLARE @StartRecordNo INT, @EndRecordNo INT
IF @CurrentPageNo IS NULL
SET @CurrentPageNo = 1
SET @StartRecordNo = ((@CurrentPageNo - 1) * @PageSize)
SET @EndRecordNo = @StartRecordNo + @PageSize
SELECT
ROW_NUMBER() OVER (ORDER BY CreatedByDate desc) As srno,
EmployeeID, FirstName, LastName, Email, DateOfBirth, Joining,
MobileNumber, MonthsOfExperience, TotalExperience, DepartmentName
FROM
Employee
INNER JOIN
Department ON Employee.DeptId = Department.DepartmentID
WHERE
(ISNULL(@FirstName, '') = '' OR Employee.FirstName LIKE '%' + FirstName + '%')
AND
(ISNULL(@Email, '') = '' OR Employee.Email LIKE '%' + @Email + '%')
AND
(@DeptId IS NULL OR Employee.DeptId = @DeptId)
END
のように見えます。実行したときのように
exec EmployeeList 1,10,'shaili','',null
他のレコードも表示されます。誰もこれを説明できますか?私は与えられた名前のレコードだけを欲しい。私が得た
結果:では
ちょうどのみ姓で探してみてください場所があります。 – Lasith
"%"を削除してください。 procはあなたにここにshを含むすべての名前を与えます。 – Sami
@Lasith他に2行コメントしました。私はVIKASという名前で検索し、まだ3つの結果すべてを表示しています。私はいくつかの論理を欠いていますか? –