반응형
<< 숫자함수 >>
- ABS(n) : 주어진 값의 절대값 리턴
SELECT ABS(-10), ABS(10), ABS(0) FROM DUAL;
- CELL(n) : 주어진 값보다는 크지만 가장 근접하는 최소값 리턴
SELECT CEIL(5.5) FROM DUAL;
- EXP(n) : 주어진 값의 e의 승수를 리턴 (e = 2.171828183...)
SELECT EXP(5) FROM DUAL;
- FLOOP(n) : 주어진 값보다 작거나 같은 최대 정수값을 리턴
SELECT FLOOR(5.5) FROM DUAL;
- LN(n) : 주어진 값의 자연로그 값을 리턴
SELECT LN(148.413) FROM DUAL;
- LOG(m, n) : 밑을 m으로 한 n의 로그 값을 리턴
SELECT LOG(10, 1000) FROM DUAL;
- MOD(m, n) : m을 n으로 나눠 남은 값을 리턴. n이 0일 경우 m을 리턴
SELECT MOD(18, 5) FROM DUAL;
- POWER(m, n) : m의 n승 값을 리턴
SELECT POWER(5, 2) FROM DUAL;
- ROUND(n, [m]) : n값의 반올림을 하는 함수. m은 반올림 할 소수점 자리 수를 나타냄.
SELECT ROUND(3.545, 2) ROUND1
, TO_CHAR( ROUND( TO_DATE( '20230601 113131', 'YYYYMMDD HH24MISS' ), 'YYYY' ), 'YYYYMMDD HH24MISS' ) YYYY1
, TO_CHAR( ROUND( TO_DATE( '20230716 113131', 'YYYYMMDD HH24MISS' ), 'YYYY' ), 'YYYYMMDD HH24MISS' ) YYYY2
, TO_CHAR( ROUND( TO_DATE( '20230715 113131', 'YYYYMMDD HH24MISS' ), 'MM' ), 'YYYYMMDD HH24MISS' ) MM1
, TO_CHAR( ROUND( TO_DATE( '20230716 113131', 'YYYYMMDD HH24MISS' ), 'MM' ), 'YYYYMMDD HH24MISS' ) MM2
, TO_CHAR( ROUND( TO_DATE( '20230716 113131', 'YYYYMMDD HH24MISS' ), 'DD' ), 'YYYYMMDD HH24MISS' ) DD1
, TO_CHAR( ROUND( TO_DATE( '20230716 123131', 'YYYYMMDD HH24MISS' ), 'DD' ), 'YYYYMMDD HH24MISS' ) DD2
, TO_CHAR( ROUND( TO_DATE( '20231231 112931', 'YYYYMMDD HH24MISS' ), 'HH24' ), 'YYYYMMDD HH24MISS' ) HH1
, TO_CHAR( ROUND( TO_DATE( '20231231 113031', 'YYYYMMDD HH24MISS' ), 'HH24' ), 'YYYYMMDD HH24MISS' ) HH2
, TO_CHAR( ROUND( TO_DATE( '20231231 113129', 'YYYYMMDD HH24MISS' ), 'MI' ), 'YYYYMMDD HH24MISS' ) MI1
, TO_CHAR( ROUND( TO_DATE( '20231231 113131', 'YYYYMMDD HH24MISS' ), 'MI' ), 'YYYYMMDD HH24MISS' ) MI2
FROM DUAL;
- SIGN(n) : n<0일 경우, -1을 리턴, n=0일 경우 0을 리턴, N>0일 경우 1을 리턴
SELECT SIGN(5) C1, SIGN(-5) C2, SIGN(0) C3 FROM DUAL;
- SQRT(n) : 주어진 값의 루트값을 리턴. 이때 n은 양수여야함.
SELECT SQRT(26) FROM DUAL;
- TRUNC(n, m) : n값을 소수점 m번째 자리로 반내림한 값을 리턴
SELECT TRUNC(3.545, 2)
, TO_CHAR( TRUNC( TO_DATE( '20230601 113131', 'YYYYMMDD HH24MISS' ), 'YYYY' ), 'YYYYMMDD HH24MISS' ) YYYY
, TO_CHAR( TRUNC( TO_DATE( '20230715 113131', 'YYYYMMDD HH24MISS' ), 'MM' ), 'YYYYMMDD HH24MISS' ) MM
, TO_CHAR( TRUNC( TO_DATE( '20230716 113131', 'YYYYMMDD HH24MISS' ), 'DD' ), 'YYYYMMDD HH24MISS' ) DD
, TO_CHAR( TRUNC( TO_DATE( '20231231 112931', 'YYYYMMDD HH24MISS' ), 'HH24' ), 'YYYYMMDD HH24MISS' ) HH
, TO_CHAR( TRUNC( TO_DATE( '20231231 113129', 'YYYYMMDD HH24MISS' ), 'MI' ), 'YYYYMMDD HH24MISS' ) MI
, TO_CHAR( TRUNC( TO_DATE( '20231231 113129', 'YYYYMMDD HH24MISS' ), 'DD' ), 'YYYYMMDD HH24MISS' ) DD
FROM DUAL;
- REGEXP_COUNT( source_char, pattern{, replace_string{, position{, occurrence{, match_parameter}}}} )
- 문자열에서 지정한 패턴 조건(정규표현식, 정규식)을 만족하는 부분을 검색해 다른 문자열로 치환
- 복자합 치환/검색 조작을 가능하게
SELECT REGEXP_COUNT( 'abcabcabc', 'abc', 1 ) A
, REGEXP_COUNT( 'abcabcabc', 'abc', 4 ) B
, REGEXP_COUNT( 'abcabcabc', 'abc', 7 ) C
, REGEXP_COUNT( 'abcabcabc', 'abc', 10 ) D
FROM DUAL;
- GREATEST(n1, n2, n3, ...) : 주어진 값 중에서 가장 큰 값을 리턴
SELECT GREATEST( 9, 10, 8, 2 ) COL1 FROM DUAL;
- LEAST(n1, n2, n3, ...) : 주어진 값 중에서 가장 작은 값을 반환
SELECT LEAST( 9, 10, 8, 2 ) COL1 FROM DUAL;
<< 문자열 처리함수 >>
- CONCAT(char1, char2) : Concatenation의 약자로, 두 문자를 결합하는 역할. "||" 연산자와 같은 역할
SELECT CONCAT('Oracle', ' Korea') NAME FROM dual;
- INITCAP(char) : 주어진 문자열의 첫 번째 문자를 대문자로 변환
SELECT INITCAP('HEllo WOrld!') FROM dual;
- LOWER(char) : 문자열을 소문자로 변환
SELECT LOWER('HEllo WOrld!') FROM dual;
- UPPER(char) : 문자열을 대문자로 변환
SELECT UPPER('HEllo WOrld!') FROM dual;
- LPAD(char1, n [,char2]) :왼쪽에 문자열을 끼어 놓는 역할
- n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char2을 n개 문자열 만큼 리턴
SELECT LPAD('JUNG-SICK', 11, '*') NAME FROM dual;
- RPAD(char1, n [,char2]) : 오른쪽에 문자열을 끼어 놓는 역할
- n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char2을 n개 문자열 만큼 리턴
SELECT RPAD('JUNG-SICK', 11, '*') NAME FROM dual;
- SUBSTR(char, m ,[n]) : SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 리턴
- m이 음수일 경우, 뒤에서 m번째 문자부터 반대 방향으로 n개의 문자를 리턴
SELECT SUBSTR('JUNG-SICK', 3, 3) COL1, SUBSTR('JUNG-SICK', -3, 3) COL2 FROM dual;
- LENGTH(char1) : 문자열의 길이를 리턴
SELECT LENGTH('JUNG-SICK') TEST FROM dual;
- REPLACE(char1, str1, str2) : 문자열의 특정 문자를 다른 문자로 변환 (대소문자 구분)
SELECT REPLACE('JACK and JUE','J','BL') COL1, REPLACE('JACK and JUE','j','BL') COL2 FROM dual;
- INSTR( char1, str1, position, seq ) : 문자(char1)에 문자열(str1)이 포함되어 있는지를 좌/우(position)기준으로 조사하여 문자열의 n번째 위치(seq)를 리턴
- 지정한 문자열이 발견되지 않으면 0을 리턴
SELECT INSTR('CORPORATE FLOOR','OK') COL1, INSTR('CORPORATE FLOOR','OR',3) COL2 FROM dual;
- TRIM : 특정한 문자를 제거. 제거할 문자를 입력하지 않으면 기본적으로 공백 제거
- 리턴값의 데이터타입은 VARCHAR2
SELECT TRIM(' ABC DEC ') COL1, TRIM(0 FROM 0009872348900) COL2 FROM dual;
<< 날짜 처리함수 >>
- LAST_DAY(d) : 달의 마지막 날의 날짜를 리턴
SELECT SYSDATE COL1, LAST_DAY(SYSDATE) COL2 FROM dual;
- ADD_MONTHS(a, b) : a의 날짜에 b의 달을 더한 값을 리턴
SELECT ADD_MONTHS(SYSDATE,3) COL1 FROM dual;
- MONTH_BETWEEN(a1, a2) : MONTH_BETWEEN은 a1과 a2 사이의 달의 수를 NUMBER형 타입으로 리턴
SELECT MONTHS_BETWEEN( TO_DATE('2000/06/05'), TO_DATE('2000/09/23') ) COL1 FROM dual;
- ROUND(d[,F]) : F에 지정된 단위로 반올림
- F가 연도라면 연도 단위로 반올림
SELECT TO_CHAR( ROUND( TO_DATE( '20230601 113131', 'YYYYMMDD HH24MISS' ), 'YYYY' ), 'YYYYMMDD HH24MISS' ) YYYY1
, TO_CHAR( ROUND( TO_DATE( '20230716 113131', 'YYYYMMDD HH24MISS' ), 'YYYY' ), 'YYYYMMDD HH24MISS' ) YYYY2
, TO_CHAR( ROUND( TO_DATE( '20230715 113131', 'YYYYMMDD HH24MISS' ), 'MM' ), 'YYYYMMDD HH24MISS' ) MM1
, TO_CHAR( ROUND( TO_DATE( '20230716 113131', 'YYYYMMDD HH24MISS' ), 'MM' ), 'YYYYMMDD HH24MISS' ) MM2
, TO_CHAR( ROUND( TO_DATE( '20230716 113131', 'YYYYMMDD HH24MISS' ), 'DD' ), 'YYYYMMDD HH24MISS' ) DD1
, TO_CHAR( ROUND( TO_DATE( '20230716 123131', 'YYYYMMDD HH24MISS' ), 'DD' ), 'YYYYMMDD HH24MISS' ) DD2
, TO_CHAR( ROUND( TO_DATE( '20231231 112931', 'YYYYMMDD HH24MISS' ), 'HH24' ), 'YYYYMMDD HH24MISS' ) HH1
, TO_CHAR( ROUND( TO_DATE( '20231231 113031', 'YYYYMMDD HH24MISS' ), 'HH24' ), 'YYYYMMDD HH24MISS' ) HH2
, TO_CHAR( ROUND( TO_DATE( '20231231 113129', 'YYYYMMDD HH24MISS' ), 'MI' ), 'YYYYMMDD HH24MISS' ) MI1
, TO_CHAR( ROUND( TO_DATE( '20231231 113131', 'YYYYMMDD HH24MISS' ), 'MI' ), 'YYYYMMDD HH24MISS' ) MI2
FROM DUAL;
<< 변환함수 >>
- TO_CHAR : DATE형, NUMBER형을 VARCHAR2형으로 변환
SELECT TO_CHAR(sysdate, 'YEAR') COL1, TO_CHAR(sysdate, 'MONTH') COL2, TO_CHAR(sysdate, 'DAY') COL3, TO_CHAR(1234, '00009') COL4, TO_CHAR(1234, '999,990') COL5 FROM dual;
- TO_DATE : CHAR, VARCHAR2형을 DATE 타입으로 변환
SELECT TO_DATE('2000/06/16','YYYY/MM/DD') COL1, TO_DATE('20000616','YYYYMMDD') COL2 FROM dual;
- TO_NUMBER : CHAR, VARCHAR2의 데이터 타입을 숫자형식으로 변환
SELECT TO_NUMBER('1210616') COL1 FROM dual;
반응형
'개발일기 💻 > DB' 카테고리의 다른 글
SqlDeveloper에서 DB 비교하기 (0) | 2023.12.21 |
---|---|
[Oracle] 확장 GROUP 함수 - GROUPPING() (2) | 2023.12.06 |
[Oracle] 확장 GROUP 함수 - CUBE() (0) | 2023.12.06 |
[Oracle] 확장 GROUP 함수 - GROUPING SETS() (2) | 2023.12.06 |
[Oracle] 확장 GROUP 함수 - ROLLUP() (0) | 2023.12.05 |