달나라 노트

Redshift : LPAD, RPAD (문자 양쪽에 특정 문자 추가) 본문

SQL/Redshift

Redshift : LPAD, RPAD (문자 양쪽에 특정 문자 추가)

CosmosProject 2020. 12. 17. 02:24
728x90
반응형

 

 

 

LPAD(), RPAD()

특히 시간이나 날짜같은 경우 3시를 3시 03시 둘 다로 표현할 수 있습니다. 날짜도 3일을 3일과 03일 두 방법으로 표현 가능하죠.
이런 경우 전체적인 길이를 맞추기 위해 앞자리에 0을 붙이는 경우가 많습니다.
하지만 모든 데이터가 다 이렇게 되어있는 것은 아니죠.
이런 경우 어떤 문자열에 어떤 다른 문자를 붙여야 할 상황이 생길 수도 있는데, 이럴때 LPAD(), RPAD() 함수를 이용합니다.

 

 

 

 

 

 

LPAD()

LPAD() 함수는 왼쪽부터 특정한 문자로 채우며 명시된 문자의 총 길이만큼 왼쪽에서붙터 반환합니다.

Syntax

LPAD(값, 총 문자길이, 채울 문자)



SELECT LPAD('cde', 5, 'ab');    --> 1
SELECT LPAD('cde', 4, 'ab');    --> 2
SELECT LPAD(5, 2, 0);           --> 3
SELECT LPAD(5, 2, '0');         --> 4
SELECT LPAD(5, 3, 0);           --> 5
SELECT LPAD(5, 3, 'abc');       --> 6
SELECT LPAD('abcdef', 3, 'k');  --> 7

Result
abcde
acde
05
05
005
ab5
abc

위 예시에서 보이는 LPAD 함수의 가능한 경우의 수를 보고 한번 함수가 어떻게 작동하는지를 파악해봅시다.

 

1. cde라는 문자의 왼쪽에 ab라는 텍스트를 추가합니다. 그러면 abcde가 되고 이는 5글자입니다.

따라서 abcde가 return 됩니다.

 

2. cde라는 문자의 왼쪽에 ab라는 텍스트를 추가합니다.

cde는 3글자이며 2번 예시의 총 문자길이 제한은 4이므로 1개의 문자만 추가될 수 있습니다.

따라서 ab라는 텍스트 중 가장 왼쪽에서 1개의 문자만 추가됩니다.

결국 acde가 return 됩니다.

 

3. 5라는 문자에 0이라는 문자를 왼쪽에 추가합니다.

글자수 제한은 2글자이므로 0이 추가되어도 052글자를 초과하지 않습니다.

따라서 05가 return 됩니다.

 

4. 3번과 마찬가지입니다.

 

5. 5라는 문자의 왼쪽에 0이라는 문자를 추가합니다.

글자수 제한은 3개입니다. 0을 1개만 추가하면 05로 글자수가 2개가 되므로 0을 하나 더 추가하여 세 글자인 005가 되도록 합니다.

 

6. 5라는 문자의 왼쪽에 abc라는 문자를 추가합니다.

그러면 abc5. 즉, 4글자가 되는데 글자 수 제한은 3글자이므로 2개만 추가가 가능합니다.

따라서 추가할 텍스트인 abc에서 왼쪽 2글자만 추가하여 ab5를 return합니다.

 

7. abcdef라는 글자의 왼쪽에 k를 추가합니다.

다만 글자수 제한이 3개이므로 k를 추가하지 않아도 이미 abcdef에서 글자수제한을 초과합니다.

이런 경우 원본 텍스트인 abcdef에서 왼쪽의 3글자인 abc만 return됩니다.

 

 

 

 

 

 

RPAD()

RPAD() 함수는 오른쪽부터 특정한 문자로 채우며 명시된 문자의 총 길이만큼 왼쪽에서부터 반환합니다.

Syntax

RPAD(값, 총 문자길이, 채울 문자)



SELECT RPAD('cde', 5, 'ab');    --> 1
SELECT RPAD('cde', 4, 'ab');    --> 2
SELECT RPAD(5, 2, 0);           --> 3
SELECT RPAD(5, 2, '0');         --> 4
SELECT RPAD(5, 3, 0);           --> 5
SELECT RPAD(5, 3, 'abc');       --> 6
SELECT RPAD('abcdef', 3, 'k');  --> 7

Result
cdeab
cdea
50
50
500
5ab
abc

위 예시에서 보이는 RPAD 함수의 가능한 경우의 수를 보고 한번 함수가 어떻게 작동하는지를 파악해봅시다.

1. cde라는 문자의 오른쪽에 ab를 추가합니다.

문자수 제한은 5글자이며 추가한 결과는 cdeab의 5글자이므로 문제없이 cdeab가 return됩니다.

 

2. cde라는 문자의 오른쪽에 ab를 추가합니다.

문자수 제한은 4글자이며 추가한 결과는 cdeab의 5글자이므로 1개만 추가될 수 있습니다.

따라서 추가될 ab 중 왼쪽의 1개만 추가하여 cdea가 return됩니다.

 

3. 5라는 문자의 오른쪽에 0을 추가합니다.

글자 수 제한은 2글자이며 0을 한개 추가하면 50으로 2글자가 됩니다.

따라서 50이 return됩니다.

 

4. 3번과 동일합니다.

 

5. 5라는 문자의 오른쪽에 0을 추가합니다.

글자 수 제한은 3개이므로 0을 2개 추가하여 500을 만들어야 3글자가 됩니다.

따라서 500이 return됩니다.

 

6. 5라는 문자의 오른쪽에 abc라는 문자를 추가합니다.

단, 글자 수 제한이 3글자이므로 5라는 문자에서 2글자만 추가 가능합니다.

따라서 abc 중 왼쪽 2글자인 ab가 5의 오른쪽에 추가되어 5ab가 return됩니다.

 

7. abcdef라는 문자의 오른족에 k라는 문자를 추가하여 abcdefk가 됩니다.

다만 글자 수 제한이 3글자이므로 여기서 가장 왼쪽부터 3글자인 abc를 return 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments