개발자 미니민의 개발스터디

[Oracle] 오라클 - 단일행 문자 함수 (LPAD/RPAD/TRIM/TRANSLATE)

by mini_min
[Oracle] 오라클
- 단일행 문자 함수 (LPAD/RPAD/TRIM/TRANSLATE)

✔️ LPAD/RPAD

L은 왼쪽부터 남는 공간을 채우는 문자 함수고, RPAD 는 오른쪽부터 남는 공간을 채우는 문자 함수다.

- LPAD(expr1, n [, expr2]) ; 남는 공간을 expr2로 채움 (L : 왼쪽)

- RPAD(expr1, n [, expr2]) ; 남는 공간을 expr2로 채움 (R : 오른쪽)

 

SELECT LPAD('korea', 12, '*') FROM dual;
	--*******korea
💡 korea 문자에서 왼쪽부터 12개의 공간을 채우는데, korea 가 들어가지 않는 공간들은 '*' 로 채운다.

 

 

SELECT LPAD('korea', 3, '*') FROM dual; --kor (빈공간이 없음)
💡 빈공간이 없으면, expr1 문자의 일부만 출력되기도 한다. 
만약, 공간을 0으로 주면, null 값을 출력한다.

ex) SELECT LPAD('korea', 0, '*') FROM dual; --null

 

SELECT LPAD('대한', 6, '*') FROM dual; --**대한 : LPAD에서 한글은 2칸으로 처리
💡 LPAD/RPAD 에서 한글은 '2글자'로 처리한다.

 

 

 

🔒 문제

-- 이름 중간값은 '*'로 출력하는 코드 작성 ✨✨

WITH tb AS(
        SELECT '김호' name, '010-1234-5679' tel FROM dual
            UNION ALL
        SELECT '너자바' name, '02-1234-4568' tel FROM dual
            UNION ALL
        SELECT '우리나라' name, '032-888-7777' tel FROM dual
            UNION ALL
        SELECT '이대한' name, '010-1234-5670' tel FROM dual
            UNION ALL
        SELECT '호하하' name, '010-4588-4455' tel FROM dual
    )SELECT tel, SUBSTR(name,1,1) ||
CASE WHEN LENGTH(name) = 2 THEN '*' ELSE LPAD('*', LENGTH(name-2, '*') END
|| SUBSTR(name, -1, 1) name2

 

 

 

- TRANSLATE(expr, from_string, to_string) : replace 와 유사하다

SELECT TRANSLATE('abcabccc', 'abc', 'ab') FROM dual;
    --abc 중에 ab만 남겨라

 

 

 

- LTRIM(char [,set]) : 왼쪽 공백 지우기

- RTRIM(char [,set]) : 오른쪽 공백 지우기

REPLACE도 비슷하게 사용할 수 있다는 점 기억하기!

SELECT ':' || LTRIM('     우리  나라    ') || ':' FROM dual;
SELECT ':' || RTRIM('     우리  나라    ') || ':' FROM dual;
SELECT ':' || REPLACE('     우리  나라    ', ' ', '') || ':' FROM dual;
SELECT name, RTRIM(dept, '부') || '팀' dept FROM emp;
  --TRIM은 원하는 것도 제거할 수 있다.
SELECT LTRIM('AABBCDACD', 'BA') FROM dual;
		--B 나 A 중 앞부분에 한문자라도 있으면 제거
        --다른 문자와 마주치면 제거 그만둠. 안함
💡 TRIM 은 특정 문자열도 제거할 수 있다. 특정 문자열을 제거할 때, 다른 문자열과 마주치면 함수를 종료한다. (멈춘다.)

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기