내장함수(built in) 너무 많아서 사용자 정의(user-defined) 함수 사용할 일 X
UPPER(대상) -> 대문자로 LOWER(대상) -> 소문자로 <--- 이 두개는 빈번 사용!
INITCAP(대상) -> 첫 글자만 대문자
LENGTH(대상) -> 문자열 길이 (숫자로 출력하여 새로운 칼럼 생성)
SUBSTAR(대상, 시작위치, 추출길이) -> 길이만큼 문자열 일부 추출. 시작 위치 -1이면 마지막부터
INSTR(칼럼이름, '문자') <- 특정 칼럼에 '문자'가 있는 것 출력 <- 이런거 실무에 안씀
SELECT *
FROM EMP
WHERE INSTR(ENAME, 'S') > 0; -- ENAME에 S가 1개 이상인 조건
WHERE ENAME LIKE '%S%' ; <- 이 LIKE 조건문과 동일
REPLACE(특정데이터 또는 칼럼이름, 찾는 문자, 대체할 문자(생략 可) )
SELECT '010-1234-5678' AS REPLACE_BEFORE
REPLACE('010-1234-5678', '-', ' ') AS REPLACE_1
REPLACE('010-1234-5678', '-') AS REPLACE_2
FROM DUAL; -- DUAL은 실존않는 더미 테이블이다.
활용 사례: 데이터 중간에 쓸데없는 공백, 문자
지우고 정리하는 용도
또는 약어들 풀어서 일괄 수정할 떄.
더미 테이블 DUAL 활용 사례: 오늘 날짜 찾기 or 날짜 계산
SELECT SYSDATE -- 오늘 날짜 출력
FROM DUAL;
SELECT SYSDATE -30 -- 오늘 날짜로부터 30일 뺴기
FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') - 숫자 -- 숫자 입력시 숫자 1당 1개월로 계산해 출력
FROM DUAL; -- YYYYMMDD 위치 조정 可, 일부 생략 可, -나 /를 사이에 넣기 可
LPAD RPAD <- 이런 함수 실무에 안씀
CONCAT 두 문자열 데이터 합치기 (그렇게 많이 사용은 안함)
TRIM(삭제옵션(선택), 삭제문자 FROM 원본문자)
LTRIM(왼쪽만) RTRIM(오른쪽만) <- 이 두개보다 그냥 TRIM만 쓰면 됨)
ROUND(숫자, 반올림위치) <- 반올림하는 함수
TRUNC(숫자, 버림위치)
CEIL, FLOOR <- 이런거 안씀
MOD(나눗셈대상, 나누는 숫자) <- 나머지 구하기
날짜함수는 매우 중요함!
ADD_MONTH(날짜데이터, 더해질 달수)
[매우 중요, 날짜에 빈번사용 함수!] csv를 table로 옮길 때 문제가 많이 생김 (이를 교정하는 작업)
숫자랑 날짜 데이터는 서로 다른 개념이다.
따라서 숫자 -> 문자 -> 날짜 혹은 날짜 -> 문자 -> 숫자 로 거쳐가는 과정이 필요하다!
TO_CHAR : 숫자, 날짜 -> 문자로 바꾸기 TO_CHAR(날짜, 출력문자 형태)
환율단위 조정은 예제는 이거말고 다른 함수로 쓰므로 생략
TO_NUMBER: 문자 -> 숫자로 바꾸기 TO_NUMBER(대상문자, 문자에 지정될 숫자)
TO_DATE : 문자 -> 날짜
NULL처리함수 (숫자계산 때 항상 써야함)
NVL(NULL 검사 영역, NULL일경우 출력내용) <- NULL이면 지정값, 아니면 그대로 함수
NVL2(NULL 검사 영역, NULL아닐때 출력내용, NULL일경우 출력내용) <- NULL일 때, 아닐 때 각각 표시 지정 함수
DECODE (CASE대신 이 함수를 주로 씀)
UPSAL로 닉네임을 붙여줘야 깔끔하다.
CASE (근데 잘 안씀. 너무 번거로워서.. 취향으로 쓰는 사람은 有)
보기 좋다는 장점 有
DECODE, CASE는 문법만 다를 뿐, 출력 결과, 기능은 같으므로 개인 취향에 맞춰 쓴다.
'Programming > Oracle SQL' 카테고리의 다른 글
Subquery (0) | 2023.08.25 |
---|---|
JOIN (0) | 2023.08.24 |
다중행 함수, GROUP BY, HAVING (0) | 2023.08.24 |
기본 이론, 명령어 (table 관리), constraint, SELECT (0) | 2023.08.23 |
Oracle and its developer install, basic rules (0) | 2023.08.22 |