LIKE ''||'%' 조건값이 없으면 NUL도 나오게 처리 하려면 어덯게 하나요? 0 2 12,821

by 유환 [Oracle 기초] LIKE [2012.04.17 17:14:48]


검색 조건을 입력 안하면 모두 조회 되고
입력하면 조회 조건에 걸리게 밑에 처럼 했는대
문제가 검색조건을 입력 안햇을때는 NULL인것도 나와야 하는대요.
어떤게 하면 될가요?


 SELECT STAT_CD
   FROM OUT_DT
  WHERE 1 = 1
   AND STAT_CD LIKE  ''||'%'
by 마농 [2012.04.17 17:39:21]

-- 1. OR 조건
SELECT ~ FROM ~ WHERE ~
AND ( :v_state_cd IS NULL OR stat_cd = :v_state_cd )
;
-- 2. NVL 처리
SELECT ~ FROM ~ WHERE ~
AND NVL(stat_cd, 'x') LIKE :v_state_cd||'%'
;
-- 3. UNION ALL 처리
SELECT ~ FROM ~ WHERE ~
AND :v_state_cd IS NULL
UNION ALL
SELECT ~ FROM ~ WHERE ~
AND :v_state_cd IS NOT NULL
AND stat_cd = :v_state_cd
;
--4. 동적쿼리
sql := 'SELECT ~ FROM ~ WHERE ~';
IF v_state_cd IS NOT NULL THEN
sql := sql + ' AND stat_cd = :v_state_cd';
END IF;


by 유환 [2012.04.17 18:03:32]
   AND  '' IS NULL
  AND 'X' LIKE ''||'%'

감사 합니다.
참 간단하면서 오묘하네요..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입