조건에 해당하는 값이 없을때도 값이 나오게 처리 방법 궁금합니다 0 2 2,553

by 손님 [PL/SQL] REGEXP [2012.03.02 15:40:54]


아래 쿼리에서요 굵게 표시된 부분에서 조회된 값을 제외한 값이 나오는 쿼리인데요

여기서 값이 없으면 전체 값이 아예 안나옵니다..;;

조회값이 없어도 전체 값은 나오게 수정하려면 굵게 표시된 쿼리부분에서

어떤 작업을 하면 되나요? 조언바랍니다~



SELECT  CATEGORYID,
    TITLE,
    DESCRIPTION,
    RGST_USERID,
    RGST_USERNAME,
    CATEGORY_TYPE,
    TRNS_SRC,
    TRNS_KEY,
    ISVISB,
    MOBILE_USE,
    SCRT_LEVEL
FROM (SELECT list.CATEGORYID,
list.TITLE,
list.DESCRIPTION,
list.RGST_USERID,
list.RGST_USERNAME,
list.CATEGORY_TYPE,
list.TRNS_SRC,
list.TRNS_KEY,
list.ISVISB,
list.MOBILE_USE,
list.SCRT_LEVEL
  FROM plan_category list
  WHERE isvisb = 1
  AND (list.scrt_level < 6000 OR EXISTS (SELECT categoryid
FROM plan_category_scrt
WHERE categoryid = list.categoryid
AND groupid IN (?, ?)
)
   )
  ) a
WHERE CATEGORYID not in (SELECT TO_NUMBER(TRIM(CATEGORYID)) as CATEGORYID
FROM (SELECT REGEXP_SUBSTR(CATEGORYID, '[^,]+', 1, LEVEL) AS CATEGORYID
   FROM (SELECT to_char(CATEGORY_LIST) as CATEGORYID
FROM KMSUSR.hr_user_plan
WHERE userid = 사번
) b
   CONNECT BY REGEXP_SUBSTR(CATEGORYID, '[^,]+', 1, LEVEL ) IS NOT NULL
   ) c
)
ORDER BY CATEGORYID asc
by 마농 [2012.03.02 17:22:29]
조회된 값이 없다면? 즉, 0 행이라면 전체 조회 안될리가 없습니다.
아마도 조회된 값이 없는것이 아니라 공백('')이 1건 조회된것이 나닐까 생각되네요.
공백이 조회되어 널로 인식이 되고 Not In 에 널이 들어가면 아무것도 안나옵니다.

지금 Not In 의 서브쿼리를 보면 조건에 맞지 않아도 무조건 1건은 나오게 됩니다.
널이 안나오도록 최종적으로 조건을 한번 더 주세요.
WHERE TRIM(c.categoryid) IS NOT NULL

by 당직하사 [2012.03.02 17:23:33]

붉게 칠해진 부분의 값이 null 값으로 치환되는 경우 조회값이 없겠네요..
union 절로 전체 조회와 not in 조회로 구분 하는건 어떨까요...

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