오라클 데이터베이스에는 여러가지 함수를 제공하는데, 그 중 유용하게 사용되는 함수가 LPAD 및 RPAD이다. 각 함수의 의미는 LEFT PADDING, RIGHT PADDING을 뜻하는데, 지정한 고정 길이를 미달했을 경우 지정한 문자로 채운다는 의미다. 채우는 기준은 왼쪽으로 채우느냐 오른쪽으로 채우느냐에 따라 LEFT, RIGHT로 구분한다. LPAD와 RPAD는 크게 문자함수에 분류되며 그 중에서 '문자 조작 함수'로 분류해볼 수 있다. 문자 조작함수란 흔히 '문자열 파싱'이라고도 하며, 프로그래밍 중 매우 자주 사용하게 된다. 구분 기준에 따라 LPAD와 RPAD로 구분되기 때문에 LPAD를 기준으로 이해하면 RPAD도 어렵지 않다.

 

 

 

오라클 교재에는 LPAD와 RPAD를 아래와 같이 정의하며, 파라미터는 총 3개를 받고있다.

- LPAD: 길이가 n이 되도록 왼쪽부터 문자식으로 채운 표현식을 반환합니다.
- RPAD: 길이가 n이 되도록 오른쪽부터 문자식으로 채운 표현식을 반환합니다.

 

 

 

 

오라클 교육용 스키마인 EMP 테이블에서 월급을 조회해할 때 아래와 같이 사용할 수 있다.

문법: LPAD(변경할 컬럼명, 고정 자리수, 치환할 문자)

 

 

 

여기까지 내용은 크게 어렵지 않아서 누구나 이해할수 있다. 그렇기 때문에 장황하게 설명할 이유도 없다. 다만, 어떠한 상황에서 LPAD 함수를 사용할지 감이 잡히지 않을 수 있다. 본인 기억에 가장 크게 경험했던 LPAD 함수의 유용함은 날짜를 파싱할 때 였다.

 

코딩 중 데이터베이스에서 날짜 값을 조회한 후 년도와 월만 붙이는 작업이었다. 데이터의 결과값은 '201510'을 요했으며 2015년 10월을 의미하는 6자리 값이다. 문제는 한자리수 월 데이터였다. 월 데이터를 조회한 후 붙여넣으니 '20159'라는 5자리 데이터가 발생하는게 아닌가.

 

개발일정에 허우덕 거리느라 LPAD를 생각하지 못했다. 그렇기 때문에 분기문으로 월 데이터가 한자리수인지 두자리수인지 판별한 후 한자리수이면 임의로 숫자 0을 넣는 방식으로 코딩을 했다.

 

ex)

if 월데이터 = 한자리수 then

    TGTYM = 년데이터 + 0 + 월데이터

else

    TGTYM = 년데이터 + 월데이터

end if 

 

물론 틀린 방식은 아니지만, 몰랐기에 불필요한 코딩을 하고 말았다. LPAD를 생각해 냈더라면 간단할 것을 말이다.

 

 

  1. 아르고 2015.10.28 10:05
    좋은 정보 잘 보고가요~~~^^

Private comment