1.upper 모두 대문자
2.lower 모두 소문자
1
2
3
4
5
6
7
|
--<문자열 함수>
--1.upper(문자열) => 모두 대문자
--2.lower(문자열) => 모두 소문자
---Student 테이블에서 1 전공이 201 번인 학생들의 ID 를 이름과 함께 소문자 , 대문자로 출력
select name 이름, id, lower(id) 소문자, upper(id) 대문자 --lower, upper
from student
where deptno1 = 201;
|
cs |
3.initcap 단어의 첫글자를 대문자
1
2
3
4
5
|
--3.initcap(문자열)=> 단어의 첫 글자 대문자로 표현
---Student 테이블을 사용하여 1전공이 201 번인 학생들의 ID 를 첫 글자만 대문자로 출력
select initcap(id) --첫 글자만 대문자로 출력, 나머지는 소문자로 출력
from student
where deptno1 = 201;
|
cs |
4.length 와 lengthb
- length: 문자열의 길이
- lengthb: 한글 한글자는 3byte
1
2
3
4
5
6
7
8
9
|
--4.length(문자열) => 문자열의 길이
--영어는 length와 lengthb는 길이 동일
select length('CANDDIE') from dual;
select lengthb('CANDDIDE') from dual;
--한글 length와 lengthb 차이 O
select dname, length(dname) from dept2; --(length)한글 한글자 1
select dname, lengthb(dname) from dept2; --(lengthb=byte로설정)한글 한글자 3byte
select dname, length(dname), lengthb(dname) from dept2;
|
cs |
1
2
3
4
|
--Student 테이블에서 1 전공이 201 번인 학생들의 이름과 이름의 글자수, 이름의 바이트 수를 출력
select name 이름, length(name), lengthb(name) --length, lengthb
from student
where deptno1 = 201;
|
cs |

5.substr 와 substrb
select substr(name, 1, 2) --인덱스1부터 2자리를 추출
from student
where deptno1=101;
select substrb(name, 1, 2) --인덱스1부터 2바이트를 추출
from student
where deptno1=101;
|
cs |

1
2
3
4
5
6
7
|
select substr(name, 1, 2) --인덱스1부터 2자리를 추출
from student
where deptno1=101;
select substrb(name, 1, 2) --인덱스1부터 2바이트를 추출
from student
where deptno1=101;
|
cs |
- substr: 문자열에서 특정길이 문자를 추출
- substrb: 문자열에서 특정byte 만큼의 문자를 추출
cf)복합함수 - 함수안에 함수
1
2
3
|
--복합함수
select rpad(dname, 10, substr('1234567890', length(dname)+1)) "복합함수연습"
from dept2;
|
cs |

6.instr
1
2
3
|
--6.instr(문자열, 찾을문자열) => 찾을 문자열의 출현 위치 알려줌
select instr('abcd', 'b') from dual; --인덱스번호로 출력됨
|
cs |
결과) 2
1
2
3
4
|
--6.instr(문자열, 찾을문자열, 시작번지수, 몇번지 위치)
-- ex)instr(job,'A',-1) => -1은 뒤에서 부터 검색.
select instr('abcdefghiabd', 'b', -1) from dual; -- -1은 뒤에서부터 찾음
select instr('abcdefghiabd', 'b', -3) from dual; -- -1은 뒤에서부터 찾음
|
cs |
결과) 11
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
select instr('A*B*C*', '*', 1, 2) --인덱스1부터 찾았을 때, 2번째 * 찾기
from dual; --=>4
select instr('A*B*C*', '*', 3, 2) --인덱스3부터 찾았을 때, 2번째 * 찾기
from dual; --=>6
select instr('A*B*C*', '*', -4, 1) --인덱스-4부터 찾았을 때, 1번째 * 찾기
from dual; --=>2
select instr('A*B*C*', '*', -4, 2) --인덱스-4부터 찾았을 때, 2번째 * 찾기
from dual; --=>0
select instr('A*B*C*', '*', -2, 2) --인덱스 -2부터 찾았을 때, 2번째 * 찾기
from dual; --=>2
|
cs |
7.lpad
1
2
3
|
--7.lpad(문자열, 전체자리수, 특정문자)
--=>오른쪽 정렬 후 왼쪽 빈 공백에 특정문자로 채움
select lpad('abcd', 20, '#') from dual;
|
cs |
결과) ################abcd
8.Rpad
1
2
3
4
5
6
|
--8.- Rpad(문자열, 전체자리수, 특정문자)
--=>왼쪽 정렬 후 오른쪽 빈 공백에 특정문자로 채움)
select rpad('abcd', 20, '@') from dual;
select * from dept2;
select rpad(dname, 10, '*') "RPAD 연습" from dept2;
|
cs |
결과) abcd@@@@@@@@@@@@@@@@

9.ltrim
1
|
--9.ltrim() => 왼쪽 공백제거
|
cs |
10.rtrim
1
2
3
4
5
6
7
|
--10.rtrim()=> 오른쪽 공백제거
select * from student
where depotno1 = 103;
select name, rtrim(Regexp_replace(name, '(.)', '\-1'), '-') "변경후"
from student
where deptno1 = 103;
|
cs |

cf) REGEXP_REPLACE
1
2
3
4
5
6
7
8
9
10
11
12
|
--비교해보기
select name,position, rtrim(Regexp_replace(position, '(.)', '\-1'), '-') "변경후"
from professor
where deptno = 103;
select name,position, rtrim(Regexp_replace(position, '()', '\-1'), '-') "변경후"
from professor
where deptno = 103;
select name,position, rtrim(Regexp_replace(position, ' ', '\-1'), '-') "변경후"
from professor
where deptno = 103;
|
cs |



'Database > Basic' 카테고리의 다른 글
문자함수-substr, instr (0) | 2021.02.10 |
---|---|
concat (0) | 2021.02.09 |
숫자함수-round(), ceil(), floor(), mod(), trunc() (0) | 2021.02.08 |
집합(그룹) 함수-sum,avg,max,min,count,rank + GROUP BY , HAVING (0) | 2021.02.08 |
between, order by(오름차순과 내림차순) (0) | 2021.02.08 |