Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

꺄르륵

[Oracle SQL Developer] 기초 VI - 문자열 함수 본문

프로그래밍/DB

[Oracle SQL Developer] 기초 VI - 문자열 함수

Teddy. 2019. 10. 8. 13:34

1. 문자열 함수

  : 문자열을 서로 비교할때 사용된다.


  1.1. INITCAP(c), LOWER(c), UPPER(c)
    : 'c'에 저장된 문자열 자료의 대소 문자를 변환시킬때 사용한다.
    
    1.1.1. INITCAP(c) : 단어의 첫 글자만 대문자로 변환한다.
      예)
      SELECT INITCAP('emAil') FROM DUAL;
      -- 출력 : Email
    
    1.1.2. LOWER(c) : 모든 문자를 소문자로 변환한다.
      예)
      SELECT LOWER('EMAIL') FROM DUAL; 
      -- 출력 : email
    
    1.1.3. UPPER(c) : 모든 문자를 대문자로 변환한다.
      예)
      SELECT UPPER('email') FROM DUAL; 
      -- 출력 : EMAIL
    
      예) 사원테이블의 자료중 사원명의 FIRST NAME이 'donald'인 사원들의 사원명, 부서명, 급여를 조회하시오
      
      SELECT A.EMPLOYEE_ID 사원번호,
             A.EMP_NAME 사원명, 
             B.DEPARTMENT_NAME 부서명, 
             A.SALARY 급여
        FROM EMPLOYEES A, DEPARTMENTS B
       WHERE EMP_NAME LIKE INITCAP('donald%') --OR LOWER(EMP_NAME) LIKE 'donald%' 
         AND A.DEPARTMENT_ID = B.DEPARTMENT_ID;
    
    
    
    
   1.2. SUBSTR(c,p,n) 


    1.2.1. 주어진 문자열 'c'의 'p'번째 'n'개의 문자열을 추출하여 반환한다.
     - 'p'의 인덱스는 1번째부터 시작한다.
     - 'p'가 0이면 기본값인 1로 변환한다.
     - 'p'가 음수이면 맨 끝에서 시작한 상대 위치값이 된다.
     - 'n'이 생략되면 나머지 문자 전체가 연산의 대상이 된다.
    

 


    예) 회원테이블(MEMBER)에서 주민등록번호 뒷자리를 저장한 컬럼(MEM_REGNO2)을 마일리지가 4000이상인 회원을 검색하시오.
        비고에는 '여성회원'을 출력하시오.
        단, Alias는 회원번호, 회원명, 주민번호, 마일리지, 비고
        
        SELECT MEM_ID 회원번호, 
               MEM_NAME 회원명, 
               --MEM_REGNO1 || '-' || MEM_REGNO2 주민번호, 
               CONCAT(CONCAT(MEM_REGNO1,'-'),MEM_REGNO2) 주민번호,
               MEM_MILEAGE 마일리지, 
               '여성회원' 비고
          FROM MEMBER
         WHERE MEM_MILEAGE >= 4000
           AND SUBSTR(MEM_REGNO2,1,1) = '2' -- 문자열타입이니까 숫자도 문자열로 작성해준다.
            OR SUBSTR(MEM_REGNO2,1,1) = '4';
    

 


    예) 회원테이블에서 대전에 거주하는 회원을 조회하시오.
        단, Alias는 회원번호, 회원명, 주소, 나이 
        문자열을 숫자자료로 변환하는 함수 : TO_NUMBER(문자열) 이다.
    
    SELECT MEM_ID 회원번호, 
           MEM_NAME 회원명, 
           MEM_ZIP || ' ' || MEM_ADD1 || ' ' || MEM_ADD2 주소, 
           EXTRACT(YEAR FROM SYSDATE) - SUBSTR(MEM_REGNO1,1,2) - 1900 나이 
      FROM MEMBER
     WHERE MEM_ADD1 LIKE '대전%';