SELECT (3)
ABS : 절대 값 구하기
SELECT ABS(20), ABS(-20) FROM dual;
-- 20 20
SIGN : 양수, 음수, 0 구분하기
SELECT SIGN(20), SIGN(-20), SIGN(0) FROM dual;
20은 양수라서 1을 반환
-20은 음수라서 -1을 반환
0은 0을 반환한다.
MOD : 나머지 구하기
SELECT MOD(10,3) FROM dual;
10을 3으로 나누었을때의 나머지를 구한다.
ROUND : 반올림 하기
SELECT ROUND(15.6933, 2) FROM dual;
소수점 한자리 수 까지 표현 하겠다는 뜻
SELECT ROUND(15.693, -1) FROM dual;
일의 자리에서 반올림 하겠다는 뜻 (=20이 된다.)
TRUNC : 절삭하기 (내림)
SELECT TRUNC(15.6933, 2) FROM dual;
= 15.69
SELECT TRUNC(15.693, 0) FROM dual;
= 15
※문자 함수
LOWER
= 모든 영문자를 소문자로 바꾼다.
SELECT LOWER('KOREA seoul 2021') FROM dual;
SELECT * FROM col WHERE tname = 'EMP';
SELECT * FROM col WHERE LOWER(tname) = 'emp';
col에서 EMP의 항목들을 가져올때 LOWER를 사용하면 소문자로 써도 인식을해서 EMP를 가져온다
UPPER
모든 영문자를 대문자로.
SELECT UPPER('KOREA seoul 2021') FROM dual;
INITCAP
각 영어 단어에서 첫글자는 대문자 나머지는 소문자로 바꿔준다.
SELECT INITCAP('KOREA seoul 2021') FROM dual;
SUBSTR
문자열에서 문자열 추출.
SELECT SUBSTR('seoul korea', 7, 3) FROM dual;
7번째 위치부터 3개를 가져온다.
kor이 나온다.
SELECT SUBSTR('seoul korea', -5, 3) FROM dual;
뒤에서 5번째 위치부터 3개의 글자를 가져온다
kor이 나온다.
SELECT SUBSTR('seoul korea', 7) FROM dual;
7번째 위치부터 남은 문자열 모두를 가져온다.
= korea
LENGTH
문자열의 길이 반환 (문자 개수)
SELECT LENGTH('대한민국') FROM dual;
= 4
SELECT LENGTHB('대한민국') FROM dual;
문자열의 바이트 수를 반환 (한글은 글자당 3바이트)
= 12 반환
REPLACE
문자열을 다른 문자열로 바꿀 수 있음.
SELECT REPLACE('seoul korea', 'seoul', 'busan') FROM dual;
seoul korea에서 seoul을 busan으로 바꾼다.
SELECT REPLACE('12345123458525', '5') FROM dual;
문자 제거도 가능
5를 전부 제거해준다.
~~부를 ~~팀으로 이름 전부 바꿔주기.
SELECT name, SUBSTR(dept, 1, LENGTH(dept)-1) || '팀' dept FROM emp;
dept의 1번째 인덱스 부터 총 길이의 전 인덱스까지 SUBSTR로 문자를 가져와서 ||를 활용해서 팀자를 붙여준다.
CONCAT
문자열 결합.
SELECT CONCAT('대한', '민국') FROM dual;
같은 기능의 ||
SELECT '대한' || '민국' FROM dual;
LPAD
남는 공간을 특정 문자로 채우고 싶을때 사용 LPDA는 왼쪽 공간을 채울때
RPAD
RPAD는 오른쪽 공간을 채울 때
SELECT LPAD('korea', 12, '*') FROM dual;
-- *******korea
SELECT RPAD('korea', 12, '*') FROM dual;
-- korea*******
SELECT name, RPAD(SUBSTR(rrn, 1, 8), 14, '*') rrn FROM emp;
주민번호 뒷자리는 *로 표시
TRIM
':' || TRIM(' 우리 나라 ') || ':' FROM dual;
우리 나라의 양옆 공백을 다 날린다
그러나 가운데 공백은 못없앰.
LTRIM
SELECT ':' || LTRIM(' 우리 나라 ') || ':' FROM dual;
왼쪽 공백만 없앰.
RTRIM
SELECT ':' || RTRIM(' 우리 나라 ') || ':' FROM dual;
오른쪽 공백만 없앰.
TRANSLATE
SELECT TRANSLATE('ababbcca', 'c', 'd') FROM dual;
문자의 뜻 그대로 문자열을 바꿔준다.
ababbcca 에서 c를 d로 바꾸어 준다.
SELECT TRANSLATE('2KAB35CC','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789') FROM dual;
문자만 다 날리고 숫자만 남기는 것도 가능하다.
NVL(expr1, expr2)
expr1이 NULL이면 expr2를 반환하고 그렇지 않으면 expr1을 반환한다.
주로 NULL값에 다른 값을 줄때 사용 ex) 0
SELECT name, NVL(tel, '전화없음') FROM emp;
이렇게 하면 tel이 NULL 값인 사람들은 전화없음 으로 표시가 된다.
NVL2(expr1, expr2, expr3)
expr1이 NULL이 아니면 expr2를 반환하고 NULL이면 expr3을 반환한다.
SELECT name, NVL2(tel, tel, '전화없음') tel FROM emp;
위에 NVL 예제 소스랑 똑같은 결과이다.