# 문자함수
CONCAT(str1, str2) | 문자열 두개 연결 |
LENGTH(str) | 문자열 길이 반환 |
LOWER(str) | 문자열 소문자로 변환 |
UPPER(str) | 문자열 대문자로 변환 |
INITCAP(str) | 첫글자만 대문자로 변경 |
SUBSTR(str, start, length) | 문자열을 start부터 length개 자른다 |
REPLACE(str, str_to_replace, replace_str) | 문자열에서 str_to_replace 라는 문자열을 replace_str으로 바꿔줌 |
INSTR(string, substring, start, n) | 문자열에서 substring이라는 문자가 어디있는지 찾아줌 start: 찾기시작할 위치 / n: 몇번째 |
TRIM([LEADING|TRAILING|BOTH] char from str) | 문자열에서 char를 양쪽에서 제거해줌(공백이나 언더바 같은거) LEADING: 앞쪽 / TRAILING: 뒷쪽 / BOTH: 양쪽 |
LPAD, RPAD (string, length, char) | 문자열을 length size만큼 채워주고 남는부분에는 char를 채워줌 LPAD : 왼쪽에 채워줌 / RPAD : 오른쪽에 채워줌 |
SUBSTR('substring', 2 , 4) -> ubst : 1부터 시작!!
LPAD('Oracle', 10, '#') -> ####Oracle
RPAD('Oracle', 10, '#') -> Oracle####
▼ 문자함수 실습
SELECT CONCAT('HELLO', 'WORLD') FROM DUAL;
-- HELLOWORLD
SELECT LENGTH('HELLO') FROM DUAL;
-- 5
SELECT LOWER('HELLO') FROM DUAL;
-- hello
SELECT UPPER('hello') FROM DUAL;
-- HELLO
SELECT SUBSTR('HELLO, WORLD', 1, 5) FROM DUAL;
-- HELLO
SELECT INSTR('HELLO, WORLD','0', 1, 2) FROM DUAL;
-- 0
SELECT REPLACE('HELLO WORLD','WORLD', 'world') FROM DUAL;
-- HELLO world
SELECT TRIM(BOTH 'H' FROM 'HELLO WORLD HH') FROM DUAL;
-- ELLO WORLD
SELECT TRIM(LEADING 'O' FROM 'HELLO WORLD HH') FROM DUAL;
-- HELLO WORLD HH
# 숫자함수
ABS(n) | n의 절대값 |
CEIL(n) | 올림한 정수 |
FLOOR(n) | 내림한 정수 |
ROUND(n, m) | n을 소수점자리 m 번째에서 반올림 |
MOD(n1, n2) | n1을 n2로 나눈 나머지 |
POWER(n1, n2) | n1을 n2만큼 거듭제곱 (py: n1**n2) |
SQRT(n) | n의 제곱근 반환 (루트n) |
EXP(n) | n의 자연로그 제곱근 반환 (작은e루트n) |
LN(n), LOG(10, n) | 로그 |
SIN(n), COS(n), TAN(n) | 삼각함수 |
SIGN(n) | 부호(1, 0, -1) |
# 날짜함수
SYSDATE(), now() | system의 현재 날짜와 시간 반환(ex: 데이터베이스 서버시간) |
CURRENT_DATE, curdate(), curtime() | 현재 날짜와 시간을 반환 |
dayofmonth(date) | 며칠인지 반환 |
dayofweek(date), weekday() | 요일을 숫자로 반환 (일요일1, 월요일2 ...) |
dayofyear() | 연중 며칠째인지 반환 |
adddate(date, interval n [day|month|year]) | 지정값 만큼 더해서 반환 |
subdate(date, interval n [day|month|year]) | 지정값 만큼 빼서 반환 |
DATEDIFF(d1, d2) | d1과 d2 사이의 날 수를 반환 |
EXTRACT(field FROM source) | source에서 field(세기연월일시분초)를 추출해서 반환 |
TO_DATE(str, format) | 문자열을 format(ex: YYYY/MM/DD)형식의 DATE형으로 반환 |
TO_CHAR(date, format) | 날짜값을 format형식의 문자열로 반환 |
ADD_MONTHS(date, interger) | 날짜값에 interger만큼의 개월을 더해서 반환 |
MONTHS_BETWEEN(date1, date2) | date1과 date2 사이의 개월수 반환 |
LAST_DAY(date) | 해당 일자가 속한 달의 마지막 날짜 반환 |
NEXT_DAY(date, day_of_week) | 입력한 일자 다음에 오는 요일 반환 |
# 형 변환 함수
TO_CHAR | 숫자 또는 날자를 문자열로 반환 |
TO_NUMBER | 문자열을 숫자로 반환 |
TO_DATE | 문자열을 날짜로 반환 |
TO_TIMESTAMP | 문자열을 TIMESTAMP 값으로 반환 |
CAST | 한 데이터 타입을 다른 데이터 타입으로 변경 |
SELECT TO_CHAR(12345) FROM DUAL;
SELECT TO_NUMBER('12345') FROM DUAL;
SELECT TO_TIMESTAMP('2023/08/30 오후 02:41:32', 'YYYY-MM-CC HH24:MI:SS') FROM DUAL;
SELECT CAST(column AS DATATYPE(LENGTH)) FROM TABLE;
오라클에서는 암묵적으로 형변환 가능
근데 원하는 결과가 나오지않을 수 있으니 명시적 형변환을 권장함
# NULL함수
NULL을 처리하는 함수
NVL(값1, 값2) | 값1이 NULL이면 값2 반환, 아니면 값1 반환 |
NVL2(값1, 값2, 값3) | 값1이 NULL이면 값3 반환, 아니면 값2 반환 |
COALESCE(값1, 값2, 값3 ... ) | 모든 애들이 NULL 일 경우 NULL반환 NOT NULL인 경우 첫번째 값 반환 |
NULLIF(EXP1, EXP2) | 두 값이 같으면 NULL, 아니면 EXP1 반환 |
DECODE(값 또는 열, IF값 또는 조건식 = A THEN B, ... ) | 밑에 예시로 설명 |
SELECT COALESCE('KIWI', 'APPLE', 'BANANA') FROM DUAL;
>> KIWI
SELECT COALESCE(NULL, NULL, NULL) FROM DUAL;
>> NULL
SELECT COALESCE(NULL, NULL, 'KIWI', 'APPLE') FROM DUAL;
>> KIWI
SELECT ENAME, JOB, SAL,
DECODE(JOB, 'MANAGER', SAL*1.1, 'SALESMAN', SAL*1.2, SAL) AS NEW_SAL
FROM EMP;
>> 괄호 맨 뒤에 SAL은 해당 안되는 친구들 동결해준거
# 집계함수(AGGGREGATION FUNCTION)
# 그룹함수(GROUP F)
# 다중행 함수
해당 column의 모든 값을 계산
FOR문 같은 느낌
그룹함수는 그룹 단위로 작업을 하고 집계된 결과를 반환
여러 행을 하나의 결과로 집계하여 정보를 나타냄
SELECT문에서 사용되며, 단일 작업을 해야하는 요소들과 함께 사용할 수 없다
COUNT(*) | 테이블의 행 개수 반환 |
SUM(column) | 해당 column의 모든 값의 합계 반환 |
AVG(column) | 해당 column의 모든 값의 평균 반환 |
MIN(column) | 해당 column의 가장 작은 값 반환 |
MAX(column) | 해당 column의 가장 큰 값 반환 |
GROUP_CONCAT, LISTAGG | 특정 그룹에서 한개 이상의 연결된 문자열을 생성하고 싶을 때 사용 |
STDDEV, VARIANCE | 특정 그룹에서 표준편차와 분산 결과 반환 |
-- GROUP_CONCAT, LISTAGG
JOB에 어떤 직업들이 있을까? 세일즈맨 클럭 매니저
GROUP_CONCAT(JOB SEPARATOR ',')
'DataBase' 카테고리의 다른 글
[MySQL] alter table : FK 추가하기 (0) | 2023.11.04 |
---|---|
[DataBase] eXERD 설치 및 사용 방법 (2) | 2023.10.31 |
[DataBase] 제약 조건 (0) | 2023.09.01 |
[DataBase] 객체 종류 (0) | 2023.09.01 |
[DataBase] SQL : DDL (0) | 2023.09.01 |