: 하나의 큰 프로그램에서 반복적으로 사용되는 부분들을 분리하여 작성해 놓은 작은 서브 프로그램
:호출하며 값을 전달하면 결과를 리턴하는 방식으로 사용
SELECT EMAIL, LENGTH(EMAIL)
FROM EMPLOYEE;
: 지정한 위치부터 지정한 순번째로 검색되는 문자의 위치를 반환
-- 문자열을 앞에서부터 검색하여 첫번째 B 위치를 조회
SELECT INSTR('AABAACAABBAA', 'B') FROM DUAL;
-- 문자열을 5번째 문자부터 검색하여 첫 번째 B 위치 조회
SELECT INSTR('AABAACAABBAA', 'B', 5) FROM DUAL;
-- 문자열을 5번째 문자부터 검색하여 두 번째 B 위치 조회
SELECT INSTR('AABAACAABBAA', 'B', 5, 2) FROM DUAL;
-- EMPLOYEE 테이블에서 사원명, 이메일, 이메일중'@'위치 조회
SELECT EMP_NAME, EMAIL, INSTR(EMAIL, '@')
FROM EMPLOYEE;
: 컬럼이나 문자열에서 지정한 위치부터 지정된 길이만큼 문자열을 잘라서 반환
--> 잘라낼 길이 생략 시 끝까지 잘라냄
-- EMPLOYEE 테이블에서 사원명, 이메일 중 아이디만 조회
SELECT EMP_NAME, SUBSTR(EMAIL, 1, INSTR(EMAIL, '@') - 1 )
FROM EMPLOYEE;
: 주어진 컬럼이나 문자열의 앞,뒤,양쪽에 있는 지정된 문자를 제거
--> 양쪽 공백 제거에 많이 사용됨
-- 옵션 : LEADING(앞쪽), TRAILING(뒤쪽), BOTH(양쪽, 기본값)
SELECT TRIM(' HELLO ') FROM DUAL;
SELECT TRIM(BOTH '#' FROM '####안녕####') FROM DUAL;
SELECT ABS(10), ABS(-10) FROM DUAL;
SELECT '절대값 같음'
FROM DUAL
WHERE ABS(10) = ABS(-10);
-- EMPLOYEE 테이블에서 사원의 월급을 100만으로 나눴을 때 나머지 조회
SELECT EMP_NAME, SALARY, MOD(SALARY, 1000000)
FROM EMPLOYEE;
-- EMPLOYEE 테이블에서 사번이 짝수인 사원의 사번, 이름 조회
SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE
WHERE MOD(EMP_ID, 2) = 0;사번이 홀수인 사원의 사번...~
WHERE MOD(EMP_ID, 2) <> 0; -- 같지않다 (!= 랑 같음)
SELECT ROUND(123.456) FROM DUAL; -- 소수점 첫번째 자리에서 반올림
SELECT ROUND(123.456 , 1) FROM DUAL; -- 소수점 두번째 자리에서 반올림
--> 두번째 자리에서 반올림해서 소수점 한자리까지만 표현
SELECT ROUND(123.456 , 0) FROM DUAL; -- 소수점 첫번째 자리에서 반올림(0 기본값)
SELECT ROUND(123.456 , -1) FROM DUAL; -- 소수점 0번째 자리에서 반올림해서
--> 소수점 -1 자리 표현
--> == 1의 자리에서 반올림해서 10의 자리부터 표현
--> 둘 다 소수점 첫째 자리에서 올림/내림 처리
SELECT CEIL(123.1), FLOOR(123.9) FROM DUAL;
== 124 / 123
SELECT TRUNC(123.456) FROM DUAL; -- 소수점 아래를 버림(기본)
SELECT TRUNC(123.456, 1) FROM DUAL; -- 소수점 첫째자리 아래 버림
SELECT TRUNC(123.456, -1) FROM DUAL; -- 10의 자리 아래 버림
버림, 내림 차이점
SELECT FLOOR(-123.5), TRUNC(-123.5) FROM DUAL;
-124 / -123