일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 코딩테스트
- SQL
- 튜닝
- 실습
- 카카오
- 실기
- Numpy
- 오라클
- sklearn
- 빅데이터 분석 기사
- python3
- R
- seaborn
- matplotlib
- 파이썬
- 머신러닝
- 데이터 분석
- pandas
- 알고리즘
- oracle
- level 1
- Python
- Oracel
- 빅분기
- level 2
- Kaggle
- 프로그래머스
- Today
- Total
라일락 꽃이 피는 날
[Oracle] 단일행 함수 - 문자 함수 본문
함수 (function)
함수(function) 란, 어떤 특정 한 가지 기능을 수행하는 코드의 모음이다.
함수를 알아야 하는 이유는 데이터로부터 알고 싶은 정보를 뽑아낼 때, 쉽게 뽑아낼 수 있도록 해주기 때문이다.
오라클 함수의 종류
- 단일행 함수
- 문자 함수 : upper, lower, initcap, substr, instr, length, replace, lpad, rpad, trim, rtrim, ltrim
- 숫자 함수 : round, trunc, mod
- 날짜 함수 : months_between, add_months, next_day, last_day
- 변환 함수 : to_char, to_number, to_date
- 일반 함수 : nvl, decode, case
- 복수행 함수 : max, min, avg, sum, count
문자 함수
- upper : 데이터를 대문자로 출력
- lower : 데이터를 소문자로 출력
- initcap : 데이터의 첫 번째 철자는 대문자, 나머지는 소문자로 출력
- substr : 문자에서 특정 자리의 철자들을 추출
- length : 문자열의 길이 출력
- instr : 문자에서 특정 철자의 위치 출력
- replace : 특정 철자를 다른 철자로 변경
- lpad, rpad : 특정 철자를 N개 만큼 채우기
- trim, ltrim, rtrim : 특정 철자 잘라내기
예제1. 이름을 다음과 같이 출력
KING | king | King |
select upper(ename), lower(ename), initcap(ename)
from emp;
예제 2. 이름을 앞의 3자리만 출력
select ename, substr(ename, 1, 3)
from emp;
regexp_substr 은 regular expression (정규 표현식) 을 사용할 수 있는 substr 함수다.
regexp_substr 를 이용하면 어절 단위로 잘라낼 수 있다.
select ename, regexp_substr(address, '[^ ]+', 1)
from emp;
^ 은 not 으로 아니다 라는 뜻이고, [^ ] 은 공백이 아닌 것이라는 뜻이다.
뒤에 + 는 여러 개가 있을 수 있다는 뜻이다.
따라서 [^ ]+ 의 뜻은 공백이 아닌 것이 여러 개 있는 것이다.
select ename, regexp_substr(address, '[^ ]+', 1, 2)
from emp;
어절인 것을 첫 번째부터 찾아서 두 번째인 것을 뽑는다.
예제 3. 이름과 이름의 길이를 출력
select ename, length(ename)
from emp;
예제 4. 이름과 이름에서 알파벳 M이 포함되어져 있다면 몇 번째 자리인지 출력
select ename, instr(ename, 'M')
from emp;
예제 5. 이름과 월급을 출력하는데, 월급을 출력할 때 숫자 0 을 * 로 출력
replace(컬럼명, 변경 전 철자, 변경 후 철자)
regexp_replace(컬럼명, 변경 전 철자, 변경 후 철자)
select ename, replace(sal, 0, '*')
from emp;
예제 6. 이름과 월급을 출력하는데, 월급을 출력할 때 숫자 0부터 3까지를 * 로 출력
select ename, regexp_replace(sal, '[0-3]', '*')
from emp;
‘[0-3]’는 숫자 0부터 3까지를 의미한다.
예제 7. 이름과 월급을 출력하는데, 월급을 출력하고 나머지 자리에 다른 숫자가 임의로 적히지 않도록 * 로 채워 넣기
select ename, lpad(sal, 10, '*')
from emp;
select ename, rpad(sal, 10, '*')
from emp;
월급을 출력하는데 전체 10자리를 잡아서 월급을 출력하고, 나머지 자리에 별표(*)를 채워 넣는다.
예제 8. 이름이 jack 인 사원의 이름과 월급을 출력
insert into emp(empno, ename, sal)
values(3921, ' jack ', 3400);
select ename, sal
from emp
where trim(ename) = 'jack';
trim() 은 데이터 양쪽의 공백을 잘라 버리겠다는 뜻이다.
'프로그래밍 > Oracle' 카테고리의 다른 글
[Oracle] 단일행 함수 - 날짜 함수 (0) | 2022.05.25 |
---|---|
[Oracle] 단일행 함수 - 숫자 함수 (0) | 2022.05.25 |
[Oracle] 산술/비교/논리 연산자 (0) | 2022.05.25 |
[Oracle] 데이터 출력 (0) | 2022.05.25 |
[Oracle] 오라클 접속 (0) | 2022.05.24 |