본문 바로가기
학습 과정 공유 및 후기/SQLD

[ SQLD ] Oracle SQL (3) - 문자함수

by 커피마시는어린왕자 2020. 5. 20.

문자 함수

함수명 의미 사용 예 결과
INITCAP 입력 값의 첫 글자만 대문자로 변환 INITCAP('abcd') Abcd
LOWER 입력 값을 전부 소문자로 변환 LOWER('ABCD') abcd
UPPER 입력 값을 전부 대문자로 변환 UPPER('abcd') ABCD
LENGTH 입력된 문자열의 길이 값을 출력 LENGTH('한글')

SELECT LENGTH('한글') FROM DUAL;
2
LENGTHB 입력된 문자열의 길이의 바이트 값을 출력 LENGTHB('한글')

SELECT LENGTHB('한글') FROM DUAL;
6
(한글은 1글자 당 
3 바이트)
CONCAT 두 문자열을 결합해서 출력. || 연산자와 동일 CONCAT('A','B') AB
SUBSTR 주어진 문자에서 특정 문자만 추출 SUBSTR('ABC',1,2) AB
(첫 인덱스 : 1)
SUBSTRB 주어진 문자에서 특정 바이트만 추출 SELECT SUBSTRB('한글',1,3) FROM DUAL;
(한글은 1글자 당 
3 바이트)
INSTR 주어진 문자에서 특정 문자의 위치 추출 INSTR('A*B#','#') 4
INSTRB 주어진 문자에서 특정 문자의 위치 바이트값 추출 SELECT INSTRB('한글로','로') FROM DUAL; 7
한: 1-3 바이트
글: 4-6 바이트
로: 7-9 바이트
LPAD 주어진 문자열에서 왼쪽으로 특정 문자를 채움 LPAD('love',6,'*') **love
RPAD 주어진 문자열에서 오른쪽으로 특정 문자를 채움 RPAD('love',6,'*') love**
TRIM 앞/뒤/양쪽에 있는 특정 문자를 제거
LEADING : 앞
TRAILING : 뒤
SELECT TRIM('---TECH---') FROM DUAL TECH
LTRIM 주어진 문자열에서 왼쪽의 특정문자를 삭제함 LTRIM('*love*','*') love*
RTRIM 주어진 문자열에서 오른쪽의 특정문자를 삭제함 RTRIM('*love*','*') *love
REPLACE 주어진 문자열에서 A를 B로 치환함 REPLACE('love','l','L') Love
TRANSLATE 주어진 문자열에서 A 단어들을 B 단어들로 변환  SELECT ENAME,
TRANSLATE(ENAME, 'SMI', '*?!') FROM EMP
S - *
M- ?
I - !
REGEXP_REPLACE 주어진 문자열에서 특정 패턴을 찾아 치환함 - -
REGEXP_INSTR 주어진 문자열에서 특정 패턴의 시작위치를 반환 - -
REGEXP_SUBSTR 주어진 문자열에서 특정 패턴을 찾아 반환 - -
REGEXP_LIKE 주어진 문자열에서 특정 패턴을 찾아 반환 - -
REGEXP_COUNT 주어진 문자열에서 특정 패턴의 횟수를 반환 - -

 

 

1. INITCAP(문자열 또는 칼럼명)

- 첫 글자만 대문자로 출력하고 나머지는 모두 소문자로 출력 (중간에 공백이 있을 경우 그 다음 글자는 대문자로 바꿈)

 

 

2. LOWER (문자열 또는 칼럼명) : 전부 소문자로 변경하여 출력

 

 

3. UPPER ( 문자열 또는 칼럼명) : 전부 대문자로 변경하여 출력

 

 

4. LENGTH ( 문자열 또는 칼럼명) : 입력된 문자열의 길이를 문자 수로 계산

 

 

5. LENGTHB ( 문자열 또는 칼럼명) : 입력된 문자열의 길이를 바이트 수로 계산 (한글을 저장할 경우 1글자당 3 바이트)

 

 

6. SUBSTR (문자열 또는 칼럼명, n번째 자리부터, x개의 문자) 

 

 

7. SUBSTRB ( 문자열 또는 칼럼명, n번째 자리부터 , x바이트) : 특정 길이의 문자를 골라낼 때

 

 

8. INSTR (문자열 또는 칼럼명, 찾는 글자, n번째 자리부터, x번째)

: 특정 글자의 위치를 찾아줌

 

9. LPAD (문자열 또는 칼럼명, 자리수, 채울 문자)

: 데이터를 오른쪽에 두고, 왼쪽에 빈자리가 있을 경우 특정기호나 문자로 채움

 

 

10. RPAD (문자열 또는 칼럼명, 자리수, 채울 문자)

: 데이터를 왼쪽에 두고, 오른쪽에 빈자리가 있을 경우 특정기호나 문자로 채움

 

 

 

11. TRIM - 앞/뒤/양쪽에 있는 특정 문자를 제거

 

 

 

12. LTRIM (문자열 또는 칼럼명, 제거할 문자)

 

 

 

13. RTRIM (문자열 또는 칼럼명, 제거할 문자)

 

 

 

14. REPLACE (문자열 또는 칼럼명, '문자1을', '문자2로')

: 문자1을 문자2로 변환

 

 

 

15. TRANSLATE

 

 

- LENGTH 함수

1. 테이블 생성하기
더보기
SQL> create table test(
  2  namec char(20),         // 20칸짜리 문자 데이터
  3  namev varchar2(20)      // 가변길이
  );
  
  Table created.

 

2. 값 입력하기
더보기
SQL> insert into test values ('ENCORE','ENCORE');

1 row created.

SQL> insert into test values('엔코아','엔코아');
3. 문자열 길이(length) 출력
더보기
SQL> select length(namec), length(namev) from test;



LENGTH(NAMEC) LENGTH(NAMEV)
------------- -------------
           20             6   --> ENCORE, ENCORE
           14             3   --> 엔코아, 엔코아
           
=====================================================
           
 1글자 = 3BYTE     엔코아*3 = 9BYTE = 데이터 길이
 
 칼럼사이즈(20) - 데이터길이(9) = 11 BYTE (여유공간)
 
 데이터 글자 수(3) + 여유 공간 글자(11) = 14 BYTE

 

SQL> insert into test values('빅데이터','빅데이터');

1 row created.

SQL> select length(namec), length(namev) from test;

LENGTH(NAMEC) LENGTH(NAMEV)
------------- -------------
           20             6
           14             3
           12             4

 

 

- LTRIM 함수

SELECT LTRIM('       65475251344141313TECH', '1234567890 ') FROM DUAL;

LTRIM('6
--------
TECH