Database/Oracle

Oracle DB) 단일행 함수 - 문자함수(자르기, 연결하기 등등)

luana_eun 2022. 3. 2. 17:47
728x90

단일행 문자 함수: 문자 입력을 받아 문자나 숫자값을 반환한다. 

 

1. 대소문자 변환함수

대보문자 변환은 보통 문자열을 비교해서 찾을 때 많이 사용한다. 

    a로 시작하는 사람을 찾고싶은데 oracle db는 대소문자를 구분하기때문에

    LIKE = 'a%' 로 찾으면 대문자로 시작하는 사람은 안나온다. 

    따라서 DB에 들어있는 값을 변환해서 찾으면 모든 경우를 다 찾을 수 있다. 

 

lower()       소문자로 변환

upper()       대문자로 변환

INITCAP()    맨 앞글자만 대문자고 나머지는 소문자

select emp_name
from emps
where LOWER(emp_name) = 'apple';

 

 

 

2. 문자조작 함수

1) concat(a, b)

: 두 인수를 연결해서 하나의 문자열로 반환.

select concat(first_name, last_name) as fullname
from employees;

# 연결 연산자를 사용하는것과 같다. 
select first_name || last_name as fullname
from employees;

결과는 연결연산자를 사용하는것과 같지만, 2개 이상을 연결하고 싶은 경우 문법이 다르다. 

# concat의 경우, 함수를 중첩.
select concat(concat(first_name, last_name), job_id) as fullname
from employees;


# 연결연산자의 경우, 연결연산자를 추가로 사용.
select first_name || last_name || job_id as fullname
from employees;

 

 

2) substr(반환할 문자열, 시작위치, 반환할 문자수)

: 문자열의 일부분을 반환.

반환할 문자수는 생략이 가능한데, 생략하면 시작위치부터 전부를 반환한다. 

select last_name, substr(last_name, 1, 3) from employees;

 

last_name 문자열을

1의 위치부터 3글자까지만 출력된다.

 

ex) substr(주민번호, 1, 6) => 901225

ex) substr('Korea', -3, 2)  => re

 

 

**  substr의 시작위치에 음수가 있으면 끝에서부터 찾는다. 

select employee_id, concat(first_name, last_name) name, length(last_name)
from employees
where substr(last_name, -1, 1) = 'g';	
# = where last_name like '%g';

 

 

 

3) length(a)

: 문자열의 길이를 반환.

select last_name, length(last_name) from employees;

 

 

4) instr(a, b)

a문자열에서 b문자가 처음있는 위치값을 반환, 해당 문자가 없으면 0을 반환한다. 

주로 처음 공백이나 특정 문자가 있는 위치를 찾을 때 사용한다. 

select last_name, instr(last_name, 'a') from employees;

 

 

5) Ipad(a, b, c) / rpad(문자열, 전체자리수, 남는공간채울 문자)

: 오른쪽/왼쪽 정렬.

select lpad(last_name, 10, ' ') as last_name,
	rpad(first_name, 10, ' ') as first_name
from employees;

 

 

6) replace(a, b, c)

: a문자열에서 b문자를 c로 교체.

select phone_number, replace(phone_number, '.', '-')
from employees;

010.1234.1111 -> 010-1234-1111

 

 

7) trim(a from b)

: b문자열에서 처음이나 끝에 특정문자 a가 있으면 a를 자르기. 

  ex) trim('H' from 'HHelloWorHlddH')    => elloWorHldd

 

 

 

 

 

 

728x90