초보 질문있습니다 0 5 140

by 제리1 [SQL Query] [2019.08.13 08:49:47]


No   / Content

12       숫자

12       숫자,숫자

결과값 Y

No   / Content

12       숫자

12       숫자,문자

결과값 N

숫자라는 값만 있다면 Y 숫자,문자 이렇게 값이 함께 있으면 N값으로 출력되도록 하고싶습니다.

어떻게 접근해야할까요

by 마농 [2019.08.13 10:11:37]
WITH t AS
(
SELECT 12345 id, '숫자' v FROM dual
UNION ALL SELECT 67890, '숫자,문자' FROM dual
)
SELECT id, v
     , DECODE(v, '숫자', 'Y', 'N') yn
  FROM t
;

 


by 제리1 [2019.08.13 10:31:58]

마농님 답변 감사합니다 근데 질문을 잘못 작성해서 수정했습니다.... 시간이 되신다면 다시 봐주시면 감사하겠습니다.....


by 신이만든지기 [2019.08.13 10:57:07]
WITH
    T AS
        (SELECT 12 ID, '숫자' V FROM DUAL
         UNION ALL
         SELECT 12, '숫자,숫자' FROM DUAL
         UNION ALL
         SELECT 12, '숫자,문자' FROM DUAL)
SELECT ID
     , V
     , DECODE(REGEXP_REPLACE(V, '^(숫자|,)+$', 'Y'), 'Y', 'Y', 'N') YN
  FROM T;

 


by jkson [2019.08.13 13:50:26]
WITH T AS
(
SELECT 12 ID, '숫자' V FROM DUAL
UNION ALL
SELECT 12, '숫자,숫자' FROM DUAL
UNION ALL
SELECT 12, '숫자,문자' FROM DUAL
)
SELECT ID
, V
, CASE WHEN REGEXP_COUNT(V,'숫자') = REGEXP_COUNT(V,',') + 1 THEN 'Y' ELSE 'N' END CHK
FROM T;

 


by 마농 [2019.08.13 13:58:59]
WITH t AS
(
SELECT 12 no, '숫자' content     FROM dual
UNION ALL SELECT 12, '숫자,숫자' FROM dual
UNION ALL SELECT 13, '숫자'      FROM dual
UNION ALL SELECT 13, '숫자,문자' FROM dual
)
SELECT no
     , CASE WHEN SUM(INSTR(content, '숫자')) > 0
             AND SUM(INSTR(content, '문자')) = 0
       THEN 'Y' ELSE 'N' END yn
  FROM t
 GROUP BY no
 ORDER BY no
;

 

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