Oracle 문자 채우기 기법 LPAD와 RPAD 활용법

Oracle 데이터베이스에서 문자열을 다룰 때, 특정한 길이로 맞추거나 특정 문자로 채우는 작업은 매우 중요합니다. 이때 유용하게 사용되는 함수가 바로 LPAD와 RPAD입니다.

이 두 함수는 문자열의 길이를 조정하고, 남는 부분을 원하는 문자로 채워주는 기능을 제공합니다. 본 글에서는 LPAD와 RPAD의 기본 개념, 사용법, 응용 예제, 그리고 이를 활용한 데이터 처리 방법에 대해 자세히 알아보겠습니다.

썸네일

LPAD와 RPAD의 기본 개념

문자열 채우기 기법

LPAD와 RPAD는 각각 문자열의 왼쪽과 오른쪽에 특정 문자를 채우는 함수입니다. LPAD는 주어진 문자열의 왼쪽에, RPAD는 오른쪽에 특정 문자를 추가하여 최종적으로 지정된 길이의 문자열을 만들어냅니다.

이러한 함수는 데이터베이스에서 문자열 데이터를 일관되게 처리할 때 유용합니다.

LPAD와 RPAD의 사용법

LPAD와 RPAD의 기본 사용법은 다음과 같습니다.

sql
LPAD(값, 문자길이, 특정문자)
RPAD(값, 문자길이, 특정문자)

여기서 ‘값’은 채우고자 하는 원본 문자열, ‘문자길이’는 최종적으로 원하는 문자열의 길이, ‘특정문자’는 채우고자 하는 문자를 의미합니다. 만약 특정 문자가 지정되지 않으면 기본적으로 공백이 사용됩니다.

예를 들어, LPAD(‘dohi’, 7, ‘D’)를 실행하면, 결과는 ‘DDDdohi’가 됩니다. 이는 ‘dohi’의 길이가 4이므로, 7 – 4 = 3의 개수만큼 ‘D’가 왼쪽에 채워지기 때문입니다.

예제

아래 표는 LPAD와 RPAD의 간단한 예제를 보여줍니다.

원본 문자열 LPAD 결과 RPAD 결과
hello **hello hello**
Mahari ****Mahari Mahari****
* *

이 표를 통해 LPAD와 RPAD가 어떻게 작동하는지 쉽게 이해할 수 있습니다. LPAD는 문자열의 왼쪽에 패딩 문자를 추가하고, RPAD는 오른쪽에 추가하는 방식입니다.

LPAD와 RPAD의 응용

LPAD RPAD 사용법

LPAD와 RPAD는 문자 길이가 일정해야 하는 경우에 매우 유용하게 활용됩니다. 예를 들어, 지역 코드를 ‘000XXX’ 형식으로 맞추거나, 전화번호의 형식을 일관되게 유지하는 데 사용할 수 있습니다.

이러한 응용은 데이터 입력이나 보고서 생성 시 일관성을 보장하는 데 큰 도움이 됩니다.

주민등록번호 및 전화번호 처리

주민등록번호의 경우, 앞자리는 공개하고 나머지는 가리거나, 전화번호의 뒷자리를 표시하는 경우에도 LPAD와 RPAD를 사용할 수 있습니다. 예를 들어, 주민등록번호의 앞 7자리를 표시하고 나머지는 ‘*’로 채우는 경우, 다음과 같이 SQL 문을 구성할 수 있습니다.

sql
SELECT LPAD(SUBSTR(주민등록번호, 1, 7), 14, '*') AS masked_id
FROM 테이블명;

이 SQL 문은 주민등록번호의 앞 7자리를 표시하고, 나머지는 ‘*’로 채워서 14자의 문자열을 만듭니다. 이러한 방식으로 개인정보를 보호하면서도 필요한 정보를 나타낼 수 있습니다.

표를 통한 이해

아래 표는 주민등록번호와 전화번호의 가공 과정을 나타냅니다.

원본 주민등록번호 처리 결과
123456-1234567 123456-*
987654-9876543 987654-*

이와 같이 LPAD와 RPAD는 개인정보를 보호하면서도 필요한 정보를 효과적으로 표현하는 데 유용합니다.

다른 내용도 보러가기 #1

LPAD와 RPAD의 한계와 주의사항

데이터베이스 문자열 처리

LPAD와 RPAD를 사용할 때 몇 가지 주의할 점이 있습니다. 첫째, 이 함수는 문자열의 “byte 수”를 기준으로 작동합니다.

영어 알파벳은 1byte, 한글은 2byte로 계산됩니다. 따라서 한글이 포함된 문자열의 경우 예상한 문자 수와 실제 출력되는 byte 수가 다를 수 있습니다.

예를 들어, ‘안녕하세요’라는 문자열의 경우, 총 5글자이지만 byte 수는 10입니다. 따라서 LPAD 또는 RPAD를 사용할 때 이 점을 생각해야 합니다.

예제: 한글과 영어의 비교

아래 표는 영어와 한글이 포함된 문자열의 LPAD와 RPAD 결과를 비교한 것입니다.

원본 문자열 LPAD 결과 RPAD 결과
hello **hello hello**
* *
안녕하세요 **안녕하세요 안녕하세요**

이 표를 통해 한글과 영어의 byte 수 차이를 쉽게 확인할 수 있습니다. 한글이 포함된 경우, LPAD와 RPAD의 결과는 예상과 다를 수 있으므로 주의해야 합니다.

LPAD와 RPAD를 활용한 데이터 처리 방법

LPAD와 RPAD는 데이터베이스에서 문자열을 처리할 때 매우 유용한 도구입니다. 이를 통해 데이터의 일관성을 유지하고, 가독성을 높이며, 필요한 정보를 효과적으로 표현할 수 있습니다.

또한, 이러한 함수는 다른 SQL 함수와 조합하여 사용하면 더욱 강력한 기능을 발휘합니다.

SUBSTR와의 조합

LPAD와 RPAD는 SUBSTR와 함께 사용하여 매우 유용한 결과를 만들어낼 수 있습니다. 예를 들어, 문자열의 일부만 잘라내고 나머지는 ‘*’로 채우는 경우, 다음과 같이 SQL 문을 작성할 수 있습니다.

sql
SELECT RPAD(SUBSTR(이름, 1, 3), 10, '*') AS masked_name
FROM 테이블명;

위 SQL 문은 이름의 앞 3글자만 추출한 후, 전체 10byte가 되도록 ‘*’로 채워줍니다. 이렇게 하면 개인정보를 보호하면서도 필요한 정보를 나타낼 수 있습니다.

예제: 데이터 보호 및 가공

아래 표는 이름을 가공한 결과를 나타냅니다.

원본 이름 처리 결과
Andrea Lloyd Andr****
Marisa Song Mar*
강민수 강민*

위의 예제에서는 이름의 일부만 표시하고 나머지는 ‘*’로 가리면서 데이터 보호를 실현했습니다.

결론

Oracle의 LPAD와 RPAD 함수는 문자열 데이터를 처리하는 데 있어 매우 유용한 도구입니다. 이 함수들을 사용하면 데이터의 일관성을 유지하고, 필요한 정보를 효과적으로 표현할 수 있으며, 개인정보 보호에도 기여할 수 있습니다.

이러한 함수의 활용은 데이터베이스 관리 및 보고서 작성 시 큰 도움이 될 것입니다. 따라서 LPAD와 RPAD를 적극적으로 활용하여 데이터 처리의 효율성을 높이고, 더 나아가 데이터의 가독성과 안전성을 확보하는 데 기여해야 합니다.

같이 보면 좋은 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다