티스토리 뷰

단일행 함수(Single-Row Function)

: 한 번에 하나씩 처리하는 함수

참조: https://docs.oracle.com/database/121/SQLRF/functions002.htm#SQLRF51178


LENGTH, LENGTHB

--LENGTH
SELECT first_name as "이름", LENGTH(first_name) as "이름 문자의 길이"
FROM EMPLOYEES;




 SUBSTR(offset, size)
-- substr(offset, size): offset이 음수면 뒤에서부터
SELECT SUBSTR('abcdefg', 3,2) FROM dual; --세번째에서부터 두글자 
SELECT SUBSTR('abcdefg', -3,2) FROM dual; --뒤부터 세번째 글자부터 두

※점(dot)이 아니라 쉼표(comma)임!!!




LPAD, RPAD 연습
--RPAD
--salary의 값을 1000원에 한 개의 '*'를 급여와 함께 출력
SELECT salary, RPAD('*', (salary/1000), '*') as "1000원당 한 개"
FROM EMPLOYEES
ORDER BY salary;



REPLACE() 함수

--사원의 이름과 연락처를 출력하되, 연락처 끝 네 자리는 '*'로 변경 후 출력
SELECT first_name, REPLACE(PHONE_NUMBER, SUBSTR(PHONE_NUMBER, -4.4), '****')
FROM EMPLOYEES;


--부서 코드가 80번인 사원의 이름의 2~3번째 글자를 '-'로 바꾸어 출력하자
SELECT REPLACE(first_name, SUBSTR(FIRST_NAME, 2,2), '--')
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80;




LTRIM(), RTRIM() 함수

-- LTRIM
SELECT LTRIM(first_name, 'A') FROM EMPLOYEES;

※아래 실행화면을 보면 "A"로 시작하는 이름의 문자 "A"가 지워진 것을 확인할 수 있다. (좌: LTRIM 전 원본 이름/우: LTRIM 후)

      



-- RTRIM
SELECT RTRIM(first_name, 'n') FROM EMPLOYEES;

※마찬가지로 "n"으로 끝나는 이름의 끝 문자 "n"이 지워진 것을 확인할 수 있다. (좌: RTRIM 전 원본 이름/우: RTRIM 후)


      



MOD(), CEIL(), FLOOR(), ROUND() 함수


  • MOD(): 나머지 값을 구하는 함수
  • CEIL(): 값 올림 함수
  • FLOOR(): 값 내림 함수


--급여와 부가세(급여의 3.3%)를 출력하되
--부가세의 소수점 이하는 절삭하시오
SELECT FIRST_NAME as "이름", salary as "급여", SALARY*0.033 as "부가세",FLOOR(SALARY*0.033) as "지불 부가세", 
			CEIL(SALARY*0.033) as "이자", ROUND(SALARY*0.033)as "반올림", 
			SALARY - FLOOR(SALARY*0.033) as "세후 지급액", SALARY + CEIL(SALARY*0.033) as "지급액(보너스 포함)"
FROM EMPLOYEES;




POWER() 함수

SELECT POWER(2,30) as "2의 30승" FROM dual;




댓글