쿼리 조건 질문드립니다. 0 2 454

by dknwke [Oracle 기초] [2021.12.07 11:44:50]


NAME
NULL
LEE
NULL
KIM
PARK

오라클 초보입니다.... 질문드립니다.

위의 표는 예시를 들기위해 테이블 중 하나의 컬럼만 나타낸것입니다.

컬럼명이 NAME이고 NULL이 허용된다고 했을경우, SELECT하려는 조건 중 NAME값이 있으면 포함되는 해당 로우를 찾고

없을경우, NULL로만 이루어진 로우를 가져오는 쿼리를 짤 수 있을까요?

제 경우는 조건절에 NAME에 해당하는 값이 없으면 아무것도 조회되지 않는 문제를 겪고있습니다.

이를 NAME값이 NULL인 행들만 모두 조회되는 쿼리를 짜고 싶습니다... 가능할까요 ㅠ

 

+추가수정
조건이 조금 빠진것같네요

단순히 IS NULL로 조회하는것이 아닌

어떤 파라미터값 'LEE'를 통하여 조회했을 때 LEE가 포함되는 로우들을 가져오고

그렇지 않을경우 NULL로만 이루어진 로우를 가져오는.. 분기처리가 되는 조건을 짜고 싶습니다.

by 동동동 [2021.12.07 13:25:20]
WITH TMP AS (
SELECT NULL   AS NM, 1 SEQ FROM DUAL UNION ALL
SELECT 'LEE'  AS NM, 2 SEQ FROM DUAL UNION ALL
SELECT NULL   AS NM, 3 SEQ FROM DUAL UNION ALL
SELECT 'KIM'  AS NM, 4 SEQ FROM DUAL UNION ALL
SELECT 'PARK' AS NM, 5 SEQ FROM DUAL UNION ALL
SELECT 'LE'   AS NM, 6 SEQ FROM DUAL
)
SELECT * FROM TMP
WHERE NVL(NM, 'NULL') IN (
    SELECT NVL(NM,'NULL')
     FROM TMP 
    RIGHT OUTER JOIN DUAL
       ON NM LIKE '%LEG%'
);

 


by 마농 [2021.12.07 13:55:48]
SELECT *
  FROM t
 WHERE name = :v_name
 UNION ALL
SELECT *
  FROM t
 WHERE name IS NULL
   AND NOT EXISTS (SELECT 1 FROM t WHERE name = :v_name)
;

 

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