문자 길이를 채우는 함수들에 대해 포스팅하려고 합니다
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
앞뒤에 붙이고 싶은 경우 위처럼 사용할수있다
이상으로 포스팅을 마치겠습니다
도움이 되셨다면 공감 버튼(로그인하지 않아도 가능!!) 부탁드려요~