SUBSTR, INSTR 사용해서 문자열 자르기 하려다가 JAVA split 사용으로 변경

2021. 11. 15. 15:08Web/Project(Work)

A테이블에 a컬럽에 들어있는 내용 

 

zzzz2/IT지원/10.11.43.90

JJC09/신세카이 프로젝트/0:0:0:0:0:0:1

JJC09/신세카이 프로젝트/10.11.5.245

JJC09/0:0:0:0:0:0:1

NULL

이런 식으로 들어가 있는 컬럼이 있는데, SELECT 로 뽑아 오고싶은 것은

IT지원, 신세카이프로젝트 이런 내용들만 뽑아오고싶고

4번째 로우같이 가운데 문자열이 없는건 null처리 하고싶어요

 

라고 생각했는데 그냥 서버로 데이터 뽑아서 해결함..

 

해결 코드

@Override
public List<UserLoginHistVO> getUserLoginHistList(UserLoginHistVO paramVO) throws Exception {
	
    //쿼리결과를 UserLoginHistVO 형식으로 list에 담음
	List<UserLoginHistVO> list = odsDao.selectUserLoginHistList(paramVO);
    
    //해당 호출한 list를 forEach로 반복문 돌려준다. 각각의 반복을 vo로 칭함
    list.forEach(vo -> {
    	
        //반정규화 된 컬럼을 객체로 가져옴
        String str = vo.getChgCont();
        
        //들고온 str이 null일때는 굳이 처리할 필요없음
        if(str != null) {
        
        //null이 아닌 getChgCont()를  /기준으로 짤라준다.
        String[] chgCont = str.split("/");
        
        //안에 배열의 범위가 3개면 가운데꺼만 때서 보냄 
        if(chgCont.length == 3) {
        
        //0,1,2 순서로 배열에 담기기에 1을 넘기면 내가원하는 결과가 전달됨
        vo.setChgCont(chgCont[1]);
        
        //배열의 범위가 2개라는건 가운데꺼가 없는거라는거임 그래서 공백으로 리턴해줌
        }else if (chgCont.length == 2) {
        String empty = "";
        vo.setChgCont(empty);
        }
        }
      ]);
      return list;
      }