⇒ ABS(N) : 절대값
SELECT ABS(2.345) FROM DUAL; -- 2.345
SELECT ABS(-2.345) FROM DUAL; -- 2.345
⇒ CEIL(N) : 올림
SELECT CEIL(2.345) FROM DUAL; -- 3
SELECT CEIL(-2.345) FROM DUAL; -- -2
⇒ FLOOR(N) : 내림
SELECT FLOOR(2.345) FROM DUAL; -- 2
SELECT FLOOR(-2.345) FROM DUAL; -- -3
⇒ MOD(M,N) : 나머지 반환(n이 0일 경우 m을 반환)
SELECT MOD(-10, 3) FROM DUAL; -- -1
SELECT MOD(-10, -3) FROM DUAL; -- -1
SELECT MOD(10, 3) FROM DUAL; -- 1
SELECT MOD(10, -3) FROM DUAL; -- 1
⇒ ROUND(n, [m]) : n값의 반올림을 하는 함수로 m은 소숫점 아래 자릿수를 나타냄
SELECT ROUND(123.456) FROM DUAL; -- 123
SELECT ROUND(123.456, 0) FROM DUAL; -- 123
SELECT ROUND(123.456, 1) FROM DUAL; -- 123.5
SELECT ROUND(123.456, 2) FROM DUAL; -- 123.46
SELECT ROUND(123.456, -1) FROM DUAL; -- 120
⇒ TRUNC(n, m) : n값을 절삭하는 함수로 m은 소숫점 아래 자릿수를 나타냄
SELECT TRUNC(123.456, 1) FROM DUAL; -- 123.4
SELECT TRUNC(123.456, -2) FROM DUAL; -- 100
⇒ CONCAT(char1, char2) : Concatenation의 약자로 두 문자를 결합하는 역할을 하며, "||" 연산자와 같은 역할 수행
SELECT CONCAT('www.', 'irish')||'.com' name FROM DUAL;
-- > 결과 : www.irish.com
⇒ INITCAP(char), LOWER(char), UPPER(char)
SELECT INITCAP('irish') name FROM DUAL
UNION ALL
SELECT UPPER('irish') name FROM DUAL
UNION ALL
SELECT LOWER('irish') name FROM DUAL;
-- > 결과
--Irish
--IRISH
--irish
⇒ LPAD(char1, n [,char2]), RPAD(char1, n [,char2])
SELECT LPAD('irishclub', 12, '*') name FROM DUAL
UNION ALL
SELECT RPAD('irishclub', 12, '*') name FROM DUAL;
-- > 결과
--***irishclub
--irishclub***
⇒ SUBSTR(char, m ,[n]), SUBSTRB(char, m ,[n])
-- 세번째 이후 문자열 반환.
SELECT SUBSTR('irishclub', 3) name FROM DUAL;
-- > 결과 : ishclub
-- 세번째 이후 네개의 문자열 반환.
SELECT SUBSTR('irishclub', 3, 4) name FROM DUAL;
-- > 결과: ishc
-- 뒤에서 세번째 이후 두개의 문자열 반환.
SELECT SUBSTR('irishclub', -3, 2) name FROM DUAL;
-- > 결과 : lu
-- DB가 UTF-8인 경우 아래 SQL의 결과는?.
SELECT SUBSTRB('아이리쉬클럽',1) name FROM DUAL
UNION ALL
SELECT SUBSTRB('아이리쉬클럽',3) name FROM DUAL;
-- > 결과
--아이리쉬클럽
-- 이리쉬클럽
⇒ LENGTH(char), LENGTHB(char)
SELECT LENGTH('아이리쉬클럽') len FROM DUAL
UNION ALL
SELECT LENGTHB('아이리쉬클럽') len FROM DUAL;
-- > 결과
--6
--18
⇒ REPLACE(char1, str1, str2) : REPLACE는 문자열의 특정 문자를 다른 문자로 변환
SELECT REPLACE('irishclub','irish','db') name FROM DUAL;
-- > 결과
-- dbclub
-- 대소문자를 구분한다는 것을 알수 있다.
SELECT REPLACE('irishClub','irish','DB') name FROM DUAL
UNION ALL
SELECT REPLACE('irishClub','Irish','DB') name FROM DUAL;
-- > 결과
--DBClub
--irishClub
⇒ INSTR (char1, str1, m, n) : 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환. 지정한 문자열이 발견되지 않으면 0이 반환
SELECT INSTR('CORPORATE FLOOR','OK') idx FROM DUAL;
-- > 결과 : 0
-- OR이 있는 위치 2를 반환. 왼쪽부터 비교를 한다는 것을 알 수 있다.
SELECT INSTR('CORPORATE FLOOR','OR') idx FROM DUAL;
-- > 결과 : 2
-- 왼쪽에서 세 번째부터 시작을 해서 검색된 OR의 위치를 반환 한다.
SELECT INSTR('CORPORATE FLOOR','OR', 3) idx FROM DUAL;
-- > 결과 : 5
-- 왼쪽에서 세 번째부터 시작을 해서 비교를 하여 OR이 두 번째 검색되는 지점의 위치를 반환 한다.
SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) idx FROM DUAL;
-- > 결과 : 14
⇒ TRIM (char1[,char2]), LTRIM (char1[,char2]), RTRIM (char1[,char2])
SELECT TRIM('i' FROM 'irishclub') name FROM DUAL
UNION ALL
SELECT TRIM(' irishclub ') name FROM DUAL;
-- > 결과
--rishclub
--irishclub
-- 왼쪽의 문자열을 TRIM하는 예제이다.
-- 공백의 경우 왼쪽 공백만 제거 되는 것을 확인 할 수 있다.
SELECT LTRIM('irishclub','irish') name FROM DUAL
UNION ALL
SELECT REPLACE(LTRIM(' irishclub '),' ','*') name FROM DUAL;
-- > 결과
--club
--irishclub*
-- 오른쪽의 문자열을 TRIM 하는 예제이다.
-- 공백의 경우 오른쪽 공백만 제거 되는 것을 확인 할 수 있다.
SELECT RTRIM('irishclub','club') name FROM DUAL
UNION ALL
SELECT REPLACE(RTRIM(' irishclub '),' ','*') name FROM DUAL;
-- > 결과
--irish
--*irishclub
숫자형 함수와 같은 경우 어려운 개념들은 아니지만, 아직 실무에서는 크게 사용하고 있지는 않다. 내가 참여하고 있는 프로젝트에서는 숫자보다는 문자로 더 많은 일을 처리하기 때문이다. 하지만, 언제 떻게 숫자를 처리할 지 모르는 것보다는 괜찮다고 생각한다. 그래도, 숫자형 함수에서 인상 깊었던 함수는 절삭과 관련된 TRUNC 함수였다.
반면, 문자형 함수와 같은 경우는 실무에서 많이 사용하기 때문에 CONCAT, LOWER, UPPER, LPAD, RPAD, SUBSTR, LENGTH, REPLACE는 경험해봤다. 반면, 이번 공부를 하면서 처음 보는 것들도 있었다. INSTR, INTICAP이 여기에 해당한다. INSTR과 같은 경우는 글쎄… 왠지 나중에도 잘 안쓸 것 같기는 하다. 반면, LOWER이나 UPPER을 빈번히 사용하는 이상 INTICAP과 같은 경우는 잘 사용할 것 같다.
전반적으로 숫자형 함수와 문자형 함수에 대해서 학습했다. 실무에서 사용하던 것을 만나 반갑기도 하고, 또 새로 보는 것들도 많아 아직 해야할 것이 많이 남아있다는 생각도 든다.