SQL LPAD / RPAD / REPLICATE - 문자길이 채우기

문자 길이를 채우는 함수들에 대해 포스팅하려고 합니다

LPAD , RPAD는 오라클에서 사용하는 아이들이고

REPLICATE는 MSSQL에서 사용합니다

 

LPAD / RPAD 사용법 (Oracle)

SELECT LPAD(데이터, 고정길이, 문자) FROM DUAL
 --// 고정길이 안에 데이터를 출력하고 남는 공간을 문자로 채운다
 --// LPAD는 왼쪽을 채우고 RPAD는 오른쪽을 채웁니다
 
SELECT LPAD('A', 4, 'B') AS TEST_LPAD FROM DUAL
 --// 결과: BBBA
 
SELECT RPAD('A', 4, 'B') AS TEST_RPAD FROM DUAL
 --// 결과: ABBB

  LPAD/RPAD 함수는 세 개의 파라미터가 필요합니다

  첫 번째 파라미터 'A'는 데이터입니다 , 데이터 또는 데이터가 있는 칼럼을 적습니다

  두 번째 파라미터 4는 길이입니다 자신이 원하는 길이를 적어주세요

  세 번째 파라미터 'B'는 첫 번째 파라미터 값을 넣고 남는 빈 공간에 채울 문자입니다

 

  위에 SELECT문은 길이를 4로 지정했는데 데이터는 1개라 남은 3자리에

  세 번째 파라미터인 B가 남은 자리들을 차지하는데 LPAD/RPAD 에따라 왼쪽/오른쪽을 채워줍니다

 

아래에 TABLE이 하나 있습니다

NAME NUM
APPLE 20
PEACH 10

 

과일의 개수만큼 ' * '을 출력해보겠습니다

SELECT NAME, LPAD('', NUM+1, '*') AS STAR FROM TABLE
NAME STAR
APPLE ********************
PEACH **********

LPAD 데이터 값으로 공백 하나를 주고 공백 하나가 있기 때문에 고정길이에 NUM에다 1을 더해줍니다

그리고 남은 공간을 ' * '로 채워주면 21칸 중에 맨 오른쪽 1칸은 공백 나머지 20칸에 ' * ' 이 출력됩니다


REPLICATE 사용법 (MSSQL)

REPLICATE(문자열 또는 데이터, 정수 또는 정수 유형의 식)
 --//문자열 또는 데이터를 정수 또는 정수 유형의 식 만큼 출력한다
 
SELECT REPLICATE('0', 5)
 --//결과: 00000 ... '0'문자가 5개 출력되었다

 

오라클의 LPAD나 RPAD처럼 좌우측으로 붙이기를 하는법

SELECT REPLICATE('0', 5 - LEN('AA')) + 'AA'
 --// 결과: 000AA

  여기서 LEN은 인수의 길이를 리턴한다 즉 AA는 2를 리턴한다

  + 뒤에 붙일 문자열과 똑같은 값을 넣어주면 고정길이 5에서 뒤에 붙을 문자열의 길이만큼 뺀다는 내용이다

  이렇게 하면 결과는 0 이 고정길이 5에서 AA만큼 뺀 3개 출력되고 뒤에 AA가 출력돼서 

  LPAD와 똑같은 느낌으로 사용할 수 있다

 

SELECT 'AA' + REPLICATE('0', 5 - LEN('AA'))
 --// 결과: AA000

  RPAD는 문자열 붙여주는 + 연산을 앞에서 하면 된다

 

SELECT 'AA' + REPLICATE('0', 5)
 --// 결과: AA00000

  - LEN( )을 붙이지 않으면 고정 길이가 아닌 그냥 개수만큼 값 뒤나 앞에 붙여주는 느낌으로 사용할 수 있다

 

SELECT 'AA' + REPLICATE('0', 10 - LEN('AABB')) + 'BB'
 --// 결과: AA000000BB

  앞뒤에 붙이고 싶은 경우 위처럼 사용할수있다

 

이상으로 포스팅을 마치겠습니다

도움이 되셨다면 공감 버튼(로그인하지 않아도 가능!!) 부탁드려요~