ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.