DECLARE @FG VARCHAR(1)
DECLARE @S_SELECT VARCHAR(10)
SET @FG = 'B'
SET @S_SELECT = '가재울'
SELECT A.NUMBER, A.ADDR, C.TEMPLE
FROM member A
LEFT JOIN TEMPLE C ON A.Tmpl_No = C.TEMPLE_NO
WHERE (CASE WHEN A.ADDR LIKE '%' + @S_SELECT + '%' THEN 'A'
WHEN C.TEMPLE LIKE '%' + @S_SELECT + '%' THEN 'B'
END = @FG or '' = @FG OR '' = @S_SELECT)
저위의 쿼리에서 @S_SELECT 값 '가재울'이 A.ADDR 에도 있고 C.TEMPLE에도 있습니다.
그래서 SELECT 문을 돌리게 되면
WHERE 절에 CASE WHEN A.ADDR LIKE '%' + @S_SELECT + '%' THEN 'A' 의 @S_SELECT 에서 값을 가지고 가버려
두번째 줄에 WHEN C.TEMPLE LIKE '%' + @S_SELECT + '%' THEN 'B'의 @S_SELECT 에 값을 지정을 못하고 결국
값이 안나옵니다.
어떻게 수정하면 될까요??
Comment 2
-
아스날
2015.04.21 12:23
SELECT a.NUMBER,a.ADDR,c.TEMPLEFROM member aLEFT JOIN TEMPLE c ON a.Tmpl_No = c.TEMPLE_NOWHERE ((A.ADDR LIKE '%' + @S_SELECT + '%' AND 'A' = @FG)OR (c.TEMPLE LIKE '%' + @S_SELECT + '%' AND 'B' = @FG))OR '' IN (@FG, @S_SELECT)요걸로 한 번 해보시겠어요..? 제가 정확히 이해했는지 모르겠네요 ㅠㅠ -
아수라발발타
2015.04.29 13:09
감사합니다 도움이 많이 되었습니다