IT STUDY LOG

[Oracle] 단일 행 함수 - 문자 함수 본문

computer science/database

[Oracle] 단일 행 함수 - 문자 함수

roheerumi 2023. 8. 30. 12:06

# 문자 함수

LOWER, UPPER, INITCAP

  1. LOWER : 소문자로 변환 
  2. UPPER : 대문자로 변환 
  3. INITCAP : 모든 단어의 첫문자를 대문자로 변환 
SELECT ename, job, ename||' '||job name 
  , LOWER(ename||' '||job) "lower name" 
  , UPPER(LOWER(ename||' '||job)) "upper name" 
  , INITCAP(ename||' '||job) "initcap name" 
  FROM emp 
  -- DATA값의 경우 대소문자를 구분하므로 조건 절에서 주로 사용 
  WHERE LOWER(ename) = 'smith' 
  OR UPPER(ename) = 'SMITH';

   

CONCAT

- 두 문자열을 연결 

SELECT CONCAT(ename, job) 
  FROM emp; 

SELECT CONCAT(CONCAT(ename, ' '), job) -- CONCAT을 여러번 사용 
  FROM emp;

 

SUBSTR 

- 문자열 추출 

SELECT ename, job, ename||' '||job name 
  , SUBSTR(ename||' '||job, 1, 3) sub1 
  , SUBSTR(ename||' '||job, 7, 4) sub2 
  , SUBSTR(ename||' '||job, -3, 2) sub3 
  FROM emp 
  -- WHERE SUBSTR(ename, 1, 1) = 'S';   
  WHERE SUBSTR(ename, -2, 2) = 'ER';

  

INSTR

-  문자열 내 특정 문자열 위치를 숫자로 표시 

- (ex) INSTR(SQL기본책, 'ORDER BY', 첫번째 페이지부터, 두번째 나타나는 위치)

SELECT ename, job, ename||' '||job name 
  , INSTR(ename||' '||job, 'E', 1, 1) instr1 
  , INSTR(ename||' '||job, 'E', 10, 1) instr2 
  , INSTR(ename||' '||job, 'E', 1, 2) instr3 
  FROM emp;

 

LENGTH, CHR, ASCII

  1. LENGTH : 문자열 길이를 숫자값으로 표시 
  2. CHR : ASCII 코드 값 반환 
  3. ASCII : 문자의 ASCII 코드값 변환 
SELECT ename, job, LENGTH(ename), CHR(45), ASCII('A') 
  FROM emp;

 

LPAD, RPAD

  1. LPAD : 문자열을 제외한 왼쪽 공간에 지정한 문자로 채움 
  2. RPAD : 문자열을 제외한 오른쪽 공간에 지정한 문자로 채움 
SELECT ename, job, LENGTH(ename) "length" 
  , LPAD(ename, 10, '*') "lpad" 
  , RPAD(ename, 10, '~') "rpad" 
  FROM emp;

 

LTRIM, RTRIM

  1. LTRIM : 대상 문자열의 오른쪽부터 지정한 문자열 제거 
  2. RTRIM : 대상 문자열의 왼쪽부터 지정한 문자열 제거 
SELECT 'S'||ename||'R' "name" 
  , LTRIM('S'||ename||'R', 'S') "ltrim" 
  , RTRIM('S'||ename||'R', 'R') "rtrim" 
  FROM emp;

 

TRIM

- LTRIM + RTRIM 앞 뒤에 나오는 특정 문자를 제거 

- 유일하게 인자 받아들이는 방법이 다름

SELECT 'S'||ename||'S' "name" 
  , TRIM('S' FROM 'S'||ename||'S') "trim" 
  FROM emp; 

SELECT 'S'||ename||'S' "name" 
  , TRIM(LEADING 'S' FROM 'S'||ename||'S') "leading_trim" -- RTRIM처럼 동작 
  FROM emp; 

SELECT 'S'||ename||'S' "name" 
  , TRIM(TRAILING 'S' FROM 'S'||ename||'S') "trailing_trim" -- LTRIM처럼 동작 
  FROM emp; 

SELECT 'S'||ename||'S' "name" 
  , TRIM(BOTH 'S' FROM 'S'||ename||'S') "both_trim" -- TRIM처럼 동작 
  FROM emp;

 

REPLACE, TRANSLATE

  1. REPLACE : 특정 문자열을 다른 문자열로 대체 
  2. TRANSLATE : 한글자 단위의 변환이므로 글자 수가 맞아야 문자 대체 가능 
SELECT ename||' '||job "name" 
  , TRANSLATE(ename||' '||job, 'LE', '*!') "translate" -- L -> *, E -> ! 
  , REPLACE(ename||' '||job, 'AN', '????') "replace" 
  FROM emp;

   

Comments