안녕하세요.
현재 상세검색 쿼리를 만들고 있는데 LIKE %를 포함해서 쿼리를 작성하면
원치 않는 데이터가지 포함되어서 결과가 나옵니다.
왜 안되는걸까요...
답변 부탁드리겠습니다.
ALTER PROCEDURE [dbo].[USP_SAFETY_PRODUCTION_LIST_SEARCH]
@StartDate VARCHAR(15) = NULL,
@EndDate VARCHAR(15) = NULL,
@FinalResult INT = NULL,
@Query NVARCHAR(100) = NULL
AS
BEGIN
SELECT
ROW_NUMBER() OVER (ORDER BY SafetyID) AS Num,
s.SafetyID,
s.State,
c.Name as StateName,
s.Division,
c2.Name AS DivisionName,
s.ReceptionNumber,
s.ReceivingDate,
s.InspectionSteps,
c2.Name AS InspectionStepsName,
a.Region,
a.Name AS AquaFarmName,
a.CEO,
s.Misu,
s.WaterTankNumber,
s.QualitativeTest,
s.WeightAverage,
s.FinalResult,
s.Material,
ISNULL(d.NameKR, '-') AS MaterialName,
FROM Safety s
INNER JOIN AquaFarm a
ON a.AquaFarmID = s.AquaFarmID
INNER JOIN CommonCode c
ON c.CommonID = s.State
INNER JOIN CommonCode c2
ON c2.CommonID = s.Division
LEFT OUTER JOIN SafetyThresholdsDetail d
ON d.DetailID = s.Material
WHERE CONVERT(VARCHAR(10), s.ReceivingDate, 121)
BETWEEN CONVERT(DATE, ISNULL(@StartDate, '1900-01-01'), 121)
AND CONVERT(DATE, ISNULL(@EndDate, '2100-12-31'), 121)
AND ( (@FinalResult IS NULL AND @Query IS NULL)
OR (@FinalResult IS NOT NULL AND FinalResult = @FinalResult)
OR (@Query IS NOT NULL AND a.Name LIKE '%' + @Query + '%')
)
AND s.InspectionSteps = 7000001
ORDER BY Num DESC
END
SELECT * FROM ... WHERE s.ReceivingDate >= DATEADD(d, 0, ISNULL(@StartDate, '1900-01-01')) AND s.ReceivingDate < DATEADD(d, 1, ISNULL(@EndDate , '2100-12-31')) AND ( (@FinalResult IS NULL AND @Query IS NULL) OR (@FinalResult IS NOT NULL AND @Query IS NULL AND FinalResult = @FinalResult) OR (@FinalResult IS NULL AND @Query IS NOT NULL AND a.Name LIKE '%' + @Query + '%') OR (@FinalResult IS NOT NULL AND @Query IS NOT NULL AND FinalResult = @FinalResult AND a.Name LIKE '%' + @Query + '%') ) AND s.InspectionSteps = 7000001 ;
SELECT * FROM ... WHERE s.ReceivingDate >= DATEADD(d, 0, ISNULL(@StartDate, '1900-01-01')) AND s.ReceivingDate < DATEADD(d, 1, ISNULL(@EndDate , '2100-12-31')) AND ( (@FinalResult IS NULL) OR (@FinalResult IS NOT NULL AND FinalResult = @FinalResult ) ) AND ( (@Query IS NULL) OR (@Query IS NOT NULL AND a.Name LIKE '%'+ @Query +'%') ) AND s.InspectionSteps = 7000001 ;