본문 바로가기
Programming/Oracle SQL

Oracle Functions

내장함수(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는 문법만 다를 뿐, 출력 결과, 기능은 같으므로 개인 취향에 맞춰 쓴다.

 

 

 

 

 

 

 

728x90
반응형

'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