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 함수는 문자를 연결해주는 함수입니다.
제가 쓰고도 무슨말을 하는지 모르겠네요.... 죄송합니다.
틀린점이 있으면 말씀해주세요 ^^
'공부 > SQL' 카테고리의 다른 글
MySQL ON DUPLICATE KEY (insert 기존에 있으면 update ) (0) | 2017.04.14 |
---|---|
Mysql 덤프 / 임포트 하기 Dump / Import (0) | 2016.09.08 |
MYSQL You can't specify target table '테이블명' for update in FROM clause (0) | 2016.02.16 |
SQL DATEDIFF MY/MS (0) | 2016.02.11 |
msql 날짜 mysql 날짜 변경 (0) | 2016.02.11 |