ORACLE SQL

SQL 함수 정리 (FUNCTION) 3일차

최종군 2024. 7. 19. 13:21

 

SELECT LENGTH('오라클'),  LENGTHB('오라클')

FROM DUAL; 

 

LENGTH  : 글자수

LENGTHB : 바이트수 

 


표현법

 

* INSTR : 문자열로부터 특정 문자시작 위치를 반환 컬럼  

 

 INSTR(컬럼 | '문자열', '찾고자하는 문자')[, 찾을 위치의 시작값, 순번1]

 

SELECT INSTR ('AABAACAABBAA', 'B') -- 앞쪽에 있는 첫번째 B의 위치 : 3

FROM DUAL;

 

SELECT INSTR('AABAACAABBAA','B',-1)
FROM DUAL;

 

-1  : 뒤에서부터 찾음 

 

 

SELECT EMAIL, INSTR(email, '_', 1,1)"_ 위치", INSTR(email, '@', 1,1)"@ 위치"
FROM employee;

 

 

* SUBSTR : 문자열에서 특정 문자열을 추출해서 반환 
 

*SELECT SUBSTR('ORACLE SQL DEVELOPER', 10)

 L 추출 

 

 

SELECT SUBSTR('ORACLE SQL DEVELOPER', 8, 3) FROM DUAL;

- > 8번째 위치부터 3글자만 추출

      

 

  SELECT EMP_NAME, EMP_NO
  FROM EMPLOYEE 
  WHERE SUBSTR(EMP_NO, 8, 1) IN ('1','3')
  ORDER BY EMP_NAME;

 

 

-- 사원 정보 중 사원명, 이메일, 아이디 조회 
-- [1] 이메일에서 '@'의 위치를 찾고 => INSTR 함수 사용 
-- [2] 이메일의 컬럼의 값에서 1번째 위치부터 '@'위치(1에서 확인)전까지 추출 
SELECT EMP_NAME, email, SUBSTR(email, '1',INSTR(EMAIL, '@') -1) 
FROM EMPLOYEE;

 

 

 

  LPAD / RPAD 

                : 문자열을 조회할 때 통일감있게 조회하고자 할 때 사용 
                : 문자열에 덧 붙이고자하는 문자를 왼쪽 또는 오른쪽에서 붙여서 
                 최종 길이만큼 문자열 반환 
                
               LPAD(문자열|컬럼|,최종길이[, 덧붙일 문자])
               RPAD(문자열|컬럼|,최종길이[, 덧붙일 문자])
               
               *덧붙일 문자 생략 시 기본값으로 공백으로 채워짐 

 

 

SELECT EMP_NAME,RPAD(SUBSTR(EMP_NO, 1,8),14,'*') 
FROM EMPLOYEE;

 

 

*LTRIM/RTRIM : 문자열에서 특정 문자를 제거한 후 나머지를 반환 

 

*TRIM : 문자열 앞/뒤/양쪽에 있는 지정한 문자들을 제거한 후 너머지 값을 반환 

    [표현법]
        TRIM([LEADING | TRAILING | BOTH] 제거할 문자 FROM 문자열|컬럼)
        * 제거할 문자 생략 시 공백 제거 
        * 기본 옵션은 BOTH(양쪽)

 

SELECT TRIM(LEADING 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
SELECT TRIM(TRAILING 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
SELECT TRIM(BOTH 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;

-- LEADING LTRIM과 유사하다.
-- TRAILING RTRIM과 유사하다.
-- BOTH TRIM과 유사하다. 

 


 

 

* SELECT TRIM(BOTH 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
     / UPPER /  INITCAP - 띄어쓰기 기준으로 
    
    - LOWER : 문자열을 모두 소문자로 변경하여 반환 
    - UPPER : 문자열을 모두 대문자로 변경하여 반환 
    - INITCAP : 띄어쓰기 기준으로 첫 글자마자 
    
*/
-- "I Think so I am"
SELECT LOWER('I Think so I am') FROM DUAL;

SELECT UPPER('I Think so I am') FROM DUAL;

SELECT INITCAP('I Think so i am') FROM DUAL;

 


 

 

   * SELECT TRIM(BOTH 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
     / UPPER /  INITCAP - 띄어쓰기 기준으로 
    
    - LOWER : 문자열을 모두 소문자로 변경하여 반환 
    - UPPER : 문자열을 모두 대문자로 변경하여 반환 
    - INITCAP : 띄어쓰기 기준으로 첫 글자마자 대소문자 변환 
    
*/
-- "I Think so I am"
SELECT LOWER('I Think so I am') FROM DUAL;

SELECT UPPER('I Think so I am') FROM DUAL;

SELECT INITCAP('I Think so i am') FROM DUAL;

 

 


  * REPLACE :특정 문자열에서 특정 부분을 다른 부분으로 교체하여 문자열 반환 
  
  [표현법]
         REPLACE(문자열, 찾을 문자열, 변경할 문자열)
*/
SELECT * FROM employee;

SELECT * FROM employee;
-- 사원 테이블에서 이메일 정보 중 'or.kr' 부분을 "kh.or.kr" 값을 변경하여 조회 
SELECT REPLACE(EMAIL, '@or.kr' ,'@gmail.com') 이메일
FROM employee;

 

 

 

 


 

 

숫자 관련 함수 :

 

ABC : SELECT ABS(-10) FROM DUAL;

 

SELECT MOD(10,3) FROM DUAL;
SELECT MOD(10.9,3) FROM DUAL;
SELECT MOD(10.9,3.2) FROM DUAL;

 

ROUND : 반올림한 값을 구해주는 함수 

 

 

 

'ORACLE SQL' 카테고리의 다른 글

SQL 관련 문제 풀이  (0) 2024.07.19
SQL 정리 연산자 모음  (0) 2024.07.19
SQL 4일차 형변환  (0) 2024.07.19
SQL 2일차  (0) 2024.07.17
SQL 내용 정리 1일차 완전 기초정리  (0) 2024.07.16