[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

2016년 6월 22일 수요일

[DB] RTRIM 을 써보자..

이번 포스팅은 프로젝트 수행 중 사용하게 된 RTRIM 에 대해서 얘기를 해보고자 한다.. 보통 인터넷에서 검색을 해보면 RTRIM LTRIM 은 아주 간단한 함수 예제 중 하나이다..

R 과 L 은 Right 와 Left 의 약자로 각각 오른쪽에 있는 공백 그리고 왼쪽에 있는 공백을 삭제하는 함수라고 보면 된다..

난 쿼리문에서 해당 부분을 사용하게 되었는데 사용하게 된 계기는 함수 정의와는 약간 틀리다고 봐야된다.. 보통은 순수하게 공백을 삭제하기 위해서 쓰는 듯 하다.. 설명들도 그렇고 말이지..

나는 프로젝트 수행 중 SELECT Query 를 코딩하고 있었고, 해당 쿼리문의 WHERE 절에 조건이 세개가 들어갔다.. 그런데 거기서 유독 두개의 조건이 적용이 안되는 것이다.. 아래가 그 쿼리의 일부분인데.. 앞부분이야 머 뻔하게 데이터를 가져오는 부분이라 생략했다..

WHERE ColumnA LIKE ? AND ColumnB = ? AND Column C = ?

그런데 저 조건에서 ColumnA 와 ColumnB 에 대한 쿼리가 제대로 적용이 안되더란 말이지.. 명확히 얘기하면 SQL Tool 에서는 돌아가지만, Java 에서 해당 쿼리 수행 후 while(rs.next()) 를 하면 계속 false 가 나오는 것이다..[다들 알겠지만 혹시 모르니.. false 면 데이터가 현재 없다는 것이고, true 면 데이터가 존재한다는 것이다..] 한마디로 저 세가지 조건에 대해서 데이터가 없다는 것이지.. 그런데 막상 돌리면 위에 말한것처럼 SQL Tool 에서는 쿼리 결과가 잘보인다.. ㅋㅋ.. -_-;;;

이것저것 바꿔봐도 지속적으로 그러한 문제가 생겨서 혹시나 하는?? 그냥?? 별 생각없는?? 마음에 테이블 속성을 살펴봤다..

DESC TableName

속성을 보니 ColumnA 와 ColumnB 는 CHAR 타입이고, ColumnC 는 VARCHAR 타입이었던 것.. CHAR 타입은 사이즈를 정해두기 때문에 내가 검색하는 데이터가 사이즈보다 작게되면 자연스럽게 공백이 생기는 것이 이유였다..

예를 들면 CHAR(8) 인데.. 내가 검색하려는 문구가 820207 이라면, 실제 받아들이기는 '820207  ' 이렇게 되는 것이다.. 뒤에 공백이 나머지 길이만큼 생성이 된다는 것..

아뿔싸!!! 그래서 쿼리를 바꿔봤다.. 어떻게..?? 검색 조건이 안되는 부분에만 RTRIM 을 걸어줬다..

WHERE RTRIM(ColumnA) LIKE ? AND RTRIM(ColumnB) = ? AND Column C = ?

위와 같이 빨강색 표시된 부분처럼 해주니 바로 나오더란 SQL Tool 에서야 WHERE 절에 조건이 '820207' 이런식으로 공백이 없었으니 당연히 잘 나오고, Java 를 통해서 데이터 확인을 해보니 드디어 while(rs.next()) 가 true 였다..

별거 아닌 것으로 삽질을 좀 했는데 어찌보면 내가 기초가 부족해서 그런것일지도 모르겠다.. RTRIM LTRIM 자체는 알고 있고 들어도 봤지만, Oracle 에서의 테이블 내 속성 타입에 대한 정의나 개념을 100% 숙지하지 못했기에 해당 오류를 수정하는데 조금 시간이 걸린 것이라고 보여진다.. 그래도 이렇게 포스팅을 하고 하면서 나 스스로 또 한번 정리를 하기에 오늘도 이렇게 난 배워간다.. 무엇보다 문제 해결에 약간의 어드바이스를 해주신 동료 C 과장님에게 감사드린다..

아!! 그리고 나 스스로에게 짤막하게 충고를 하고자 한다.. 나의 능력 이상의 것을 탐하려고만 하지말고, 나 스스로 능력을 키우거나 그게 힘들거나 귀찮고 싫다면, 나에게 주어진 업무 혹은 공간에서 그에 맞도록 최선을 다하도록 하자.. 언제나 남의 떡이 커보이는 것이니..

명심하자.. 노력은 하되..
서두르지 말고, 시샘하지 말자..


댓글 없음:

댓글 쓰기