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, 12)  --인덱스1부터 2자리를 추출
    from student 
    where deptno1=101;
    
select substrb(name, 12--인덱스1부터 2바이트를 추출
    from student
    where deptno1=101;
cs
 

select dname, substr(dname, 2, 3) from dept2;


1
2
3
4
5
6
7
select substr(name, 12)  --인덱스1부터 2자리를 추출
    from student 
    where deptno1=101;
    
select substrb(name, 12--인덱스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'-1from dual; -- -1은 뒤에서부터 찾음
select instr('abcdefghiabd''b'-3from dual; -- -1은 뒤에서부터 찾음 
cs

결과) 11

        2


1
2
3
4
5
6
7
8
9
10
11
12
13
14
select instr('A*B*C*''*'12--인덱스1부터 찾았을 때, 2번째 * 찾기
    from dual; --=>4
    
select instr('A*B*C*''*'32--인덱스3부터 찾았을 때, 2번째 * 찾기
    from dual; --=>6
    
select instr('A*B*C*''*'-41--인덱스-4부터 찾았을 때, 1번째 * 찾기
    from dual; --=>2
    
select instr('A*B*C*''*'-42--인덱스-4부터 찾았을 때, 2번째 * 찾기
    from dual; --=>0
    
select instr('A*B*C*''*'-22--인덱스 -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

+ Recent posts