컬럼값을 제외한 필드데이터 조회하기 0 6 1,468

by 비연 [MySQL] mysql [2018.03.19 19:18:09]


안녕하세요.

환절기 모두 감기 조심하세요.

NO PROJECT PROJECT_SUB
001 AAA AAA,BBB,CCC
002 DDD DDD,EEE,FFF
003 GGG GGG

위와 같이 데이터가 들어가 있을 경우 

SELECT NO, PROJECT, PROJECT_SUB FROM DUAL 하면 저렇게 표현됩니다. 

저 상태에서 PROJECT_SUB의 데이터중에서 PROJECT의 값을 제외하고 PROJECT_SUB를 가져오고 싶습니다.

001              AAA               BBB,CCC
002              DDD               EEE,FFF
003              GGG               

이렇게 표현하고 싶습니다. 가능할까요? 쿼리로..

 

by 마농 [2018.03.20 08:30:46]

project_sub 에 포함된 project 값은 항상 맨 앞에 한번 오나요?
중간에 온다던가? 두번 나온다거나? 없거나 하는 경우는 없는지?


by 비연 [2018.03.20 14:19:36]

규칙적이지는 않습니다.

하지만 꼭 포함은 합니다.


by 박군two [2018.03.20 11:50:43]
WITH T(NO, PROJECT, PROJECT_SUB) AS (
      SELECT '001',	'AAA',	'AAA,BBB,CCC' FROM DUAL UNION ALL
      SELECT '002', 'DDD',	'DDD,EEE,FFF' FROM DUAL UNION ALL
      SELECT '003', 'GGG',	'GGG' FROM DUAL UNION ALL
      SELECT '004', 'EEE',	'EEE,AAA,BBB,EEE,CCC,EEE' FROM DUAL 
)
SELECT T.NO, T.PROJECT, T.PROJECT_SUB,
       SUBSTR(REPLACE(',' || T.PROJECT_SUB, ',' || T.PROJECT, ''), 2) REPLACE_PROJECT_SUB
FROM   T

이러면 되지 않을까요?


by 비연 [2018.03.20 14:22:23]

박군님 쿼리로 오류가 납니다.

mysql인데...


by 마농 [2018.03.20 14:45:30]
SELECT no
     , project
     , project_sub
     , SUBSTR(REPLACE(CONCAT(',', project_sub), CONCAT(',', project), ''), 2) x
  FROM (SELECT '001' no, 'AAA' project, 'AAA,BBB,CCC' project_sub FROM dual
        UNION ALL SELECT '002', 'DDD', 'DDD,EEE,FFF' FROM dual
        UNION ALL SELECT '003', 'GGG', 'GGG' FROM dual
        UNION ALL SELECT '004', 'GGG', 'AAA,GGG' FROM dual
        ) a
;

 


by 마농 [2018.03.20 15:02:28]

혹시 문자열이 포함관계에 있는 경우는 없나요?
있다면 좀더 복잡합니다.
예) 'GGG', 'GGG,GGGG,GGGGG'

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