[Oracle, MySQL, MSSQL] LPAD, RPAD 함수 REPLICATE 함수

성난호랑이 시니철 ㅣ 2016. 2. 17. 17:55

MSSQL REPLICATE 함수

 

REPLICATE 를 사용해서 특정 문자로 글을 채워줍니다.

 

왼쪽으로 

 

SELECT 'TEST'+ REPLICATE('0',10 - LEN('TEST'))

결과 : TEST000000

 

위 0 뜻은 빈공간에 0 으로 채워넣는다는 뜻이다

SELECT 'TEST'+ REPLICATE('*',10 - LEN('TEST'))

이렇게 하게되면

결과 : TEST******

위 결과가 나온다

 

숫자 10 뜻은 앞 TEST문자를 합친 10자리 숫자 글자수를 의미한다.

SELECT 'TEST'+ REPLICATE('*',8 - LEN('TEST'))

결과 : TEST****  (총8문자)

 

그리고 LEN 의미는 - 를 의미한다. 앞 'TEST'라는 문자와 '*' 문자 8개를 더한후 원하는 자리수만큼 뺴준다는것을 의미한다.

 

아무것도 입력하지 않았을경우

SELECT 'TEST'+ REPLICATE('*',8 - LEN(''))

결과: TEST********          //  'TEST' '*' 총합이 12개가 된다.

이런결과가 나온다.

 

오른쪽

SELECT REPLICATE('0', 7 - LEN('0000')) + '4321'

결과: 0004321

 

왼쪽과 동일하다 차이점이라고하면 원하는 글을 맨 뒤쪽에 적어주었다.  LEN 안에 숫자는 

원하는 문자 길이의 수 를의미하기때문에 '0000'으로 써도 무관하다. 하지만 원하는 문자와 길이를 맞게 적어주어야된다.

 

SELECT 'TEST'+ REPLICATE('0',10 - LEN('TESTAA01')) + 'AA01'

결과: TEST00AA01  이런식으로 앞뒤 추가하여 사용이 가능하다.

 

 

 

MYSQL / Oracle LPAD,RPAD 함수

 

왼쪽

 

SELECT LPAD('4567',10,'0') FROM DUAL

결과: 0000004567

 

MYSQL은 MS보다 쉽다...

'4567' 내가원하는 문자 

10     문자의 길이 

'0'     빈공간에 들어갈 문자

 

SELECT LPAD('4567',10,'TEST') FROM DUAL

결과: TESTTE4567

'TEST' 가 반복되어 앞에 6자리 TESTTE 가 나오게된다.

 

 

오른쪽

 

SELECT RPAD('4567',10,'0') FROM DUAL

결과: 4567000000

 

left LPAD    right RPAD 이렇게 생각하면 될거 같습니다.
LPAD, RPAD Oracle 동일하게 작동합니다.


위 MSSQL 처럼 앞뒤에 글을 추가하고 싶으면 

SELECT CONCAT('M', LPAD('4567',8,'0'),'A') FROM DUAL

결과: M00004567A

 

이렇게 작성해주시면 됩니다. 'M' 'A' 하나를 지워도 문제 없이작동합니다.

CONCAT 함수는 문자를 연결해주는 함수입니다.

 

제가 쓰고도 무슨말을 하는지 모르겠네요.... 죄송합니다.

틀린점이 있으면 말씀해주세요 ^^