[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 은 특정 문자열도 제거할 수 있다. 특정 문자열을 제거할 때, 다른 문자열과 마주치면 함수를 종료한다. (멈춘다.)
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - GROUP BY절 (HAVING 절) (0) | 2022.08.08 |
---|---|
[Oracle] 오라클 - 집계함수(COUNT), SUM/MAX/MIN/AVG (0) | 2022.08.08 |
[Oracle] 오라클 - 단일행 문자 함수 (INSTR/LENGTH/REPLACE/CONCAT) (0) | 2022.08.06 |
[Oracle] 오라클 - 단일행 문자 함수 (LOWER/UPPER/INITCAP/SUBSTR) (0) | 2022.08.06 |
[Oracle] 오라클 - 단일행 숫자 함수 (ROUND/TRUNC) (0) | 2022.08.06 |
블로그의 정보
개발자 미니민의 개발로그
mini_min