오라클에서 테이블 컬럼 존재여부를 체크해서 있는 경우만 가져오는 방법이 있을까요? 0 3 3,292

by 토토맘 [SQL Query] 오라클 mybatis [2015.07.08 14:26:36]


spring프레임웤+mybatis 환경하에서

쿼리를 구현하는 중 궁금한 것이 있어서 올려봅니다.

select

 a.코드,  

 a.유형

 a.타입

from

 임의테이블 a

 

예를 들어 임의테이블에 '유형'이라는 컬럼이 있을수도 없을수도 있습니다.

이럴 때 오라클 쿼리만으로 이를 체크해서 있는 경우에만 가져오는 방법이 없을까요?

 

 

by 마농 [2015.07.08 15:18:26]

컬럼 존재유무를 아래 쿼리로 체크해서

SELECT COUNT(*) cnt FROM col WHERE tname = '임의테이블' AND cname = '유형';

해당 결과를 이용해 동적 쿼리 구성


by 토토맘 [2015.07.08 15:52:07]

아 감사합니다. 마농님...

근데 여기서 제마음같아선, 아래와 같이 

select

 a.코드,  

 case when (SELECT COUNT(*) cnt FROM col WHERE tname = '임의테이블' AND cname = '유형') =1  then a.유형 else '' end ,

 a.타입

from

 임의테이블 a

 

이렇게 한번에 하고 싶은데 에러네요..

결국은 쿼리를 두번 날려서 처리하는 방법밖엔 없는거죠?


by 마농 [2015.07.08 16:13:01]

mybatis 에서는 SQL에 동적으로 컬럼 추가하는게 쉬운것으로 압니다.

SELECT a.코드
  <if test = "cnt == 1">
     , a.유형
  </if>
     , a.타입
  FROM 임의테이블 a
;

 

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