-
day03_2 - 오라클 (문자 함수, initcap, lower, upper, length/lengthb, concat, substr, instr, lpad, ltrim, replace)KIC/DB 오라클 2021. 6. 24. 00:25반응형
[문자함수]
[initcap 함수]
-> 첫 글자만 대문자로 출력하고 나머지는 전부 소문자로 출력하는 함수
->형식: initcap(문자열 또는 컬럼명)
emp 테이블을 사용하여 부서가 10번인 사원의 이름을 첫 글자만 대문자로 출력
--initcap
select initcap(ename) from emp
where deptno = 10;
[lower 함수]
-> 입력되는 값을 전부 소문자로 변경하여 출력
->형식: lower(문자열 또는 컬럼명)
--lower
select lower('Pretty girl') from dual;
[upper 함수]
-> 입력되는 값을 전부 대문자로 변경하여 출력
->형식: upper(문자열 또는 컬럼명)
--upper
select upper('Pretty girl') from dual;
[length/lengthb 함수]
입력된 문자열의 길이(바이트 수)를 계산해주는 함수
->형식: length(문자열 또는 칼럼)/ lengthb(문자열 또는 칼럼)
student 테이블에서 id 가 9글자 초과인 학생들의 이름과 id와 글자수를 출력
--length
select name 이름, id, length(id) 글자수
from student
where length(id) > 9;
--lengthb
select name 이름, length(name) 글자수, lengthb(name) 바이트수
from student
where deptno1 = 201;
[concat 함수]
-> || 연산자와 동일한 기능
-> 형식: concat('문자열1', '문자열2'), concat('문자열1', 컬럼명)
prfessor 테이블에서 전공이 101인 교수의 이름과 직급을 같이 출력
--concat
select concat(name,position) from professor
where deptno = 101;
--다중 concat
select concat(name,concat(position,'안녕하세요'))
from professor;
[substr 함수]
-> 문자열에서 특정 길이의 문자를 추출할 때 사용하는 함수
-> 형식: substr('문자열' 또는 컬럼명, 1, 4)
-> 두번째 인자는 시작위치, 세번째 인자는 마지막 위치
--substr
select substr('ABCDE', 2, 3)
from dual;
-> 두번째 글자부터 3개
select substr('ABCDE', -2, 3)
from dual;
-> 뒤에서 두번째 글자부터 3개 (이지만 DE 두개 밖에 없으므로 2개 출력)
student 테이블에서 jumin 컬럼을 사용해서 전공이 101번인 학생들의 이름과 생년월일을 출력
select name, substr(jumin,1,6) 생년월일 from student
where deptno1 = 101;
student 테이블에서 jumin 컬럼을 사용해서 태어난 달이 8월인 학생들의 이름과 생년월일을 출력
select name, substr(jumin,1,6) 생년월일 from student
where substr(jumin,3,2) = '08';
[substrb 함수]
-> substr 함수와 문법은 동일하지만 추출할 자리수가 아니라 추출할 바이트 수로 지정함
[instr 함수]
-> 주어진 문자열이나 칼럼에서 특정 글자의 위치를 찾아주는 함수
-> 형식: instr('문자열', 또는 컬럼, 찾는 글자, 시작 위치, 몇 번째 인지(디폴트 1))
select instr('A*B*C*', '*', 1, 2) from dual;
-> 첫번째 위치(A)부터 두번째로 나오는 *의 위치
결과: 4
select instr('A*B*C*', '*', 3, 2) from dual;
-> 세번째 위치(B)부터 두번째로 나오는 *의 위치
결과: 6
-> 시작위치를 마이너스로 줄 경우 몇번째 나오는지 계산하는 방향도 반대로 감
select instr('A*B*C*', '*', -4, 1) from dual;
-> 뒤부터 4번째(B) 자리에서 뒤로 첫번째 나오는 *의 위치
결과: 2
select instr('A*B*C*', '*', -4, 2) from dual;
-> 뒤부터 4번째(B) 자리에서 뒤로 두번째 나오는 *의 위치
결과: 0 (뒤에서 두번째로 나오는 값이 없음)
select instr('A*B*C*', '*', -2, 2) from dual;
-> 뒤부터 2번째(C) 자리에서 뒤로 두번째 나오는 *의 위치
결과: 2
[substr, instr 혼합]
-- substr, instr 혼합
select name, tel, substr(tel, 1, instr(tel, ')', 1, 1)-1) 지역번호
from student
where deptno1 = 101;
[lpad 함수]
-> 제시한 숫자만큼 자리 확보 해놓고 남은 공간 왼쪽에 해당 문자로 채우기
--lpad
select lpad(name, 10, '*') from student;
-> 제시한 숫자만큼 자리 확보 해놓고 남은 공간 오른쪽에 해당 문자로 채우기
--rpad
select rpad (name, 10, '*') from student;
[ltrim 함수]
ltrim, rtrim 함수는 왼쪽/오른쪽부터 제거하는 함수
--ltrim
select ltrim(dname, '영')
from dept2;
--rtrim
select rtrim(dname, '부')
from dept2;
[replace 함수]
replace('문자열' 또는 컬럼명, '문자1', '문자2')
student 테이블 학생들의 이름을 출력하되 성 부분은 #으로 표시되게 출력
--replace
select replace(name, substr(name,1,1), '#') from student
where deptno1 =101;
300x250'KIC > DB 오라클' 카테고리의 다른 글