[SQL] 함수 정리

개미·2023년 2월 28일
4

📌 SQL 함수 정리

1. 숫자 관련 함수

  • DECODE: 컬럼 값이 n에 일치하면 뒤의 결과를 반환, 기본 값이 없으면 Null 반환
DECODE(A,1,2,B) # A가 1이면 2, 아니면 B.
DECODE(A, B, '1', C, '2', '3') # A 가 B 일 경우 '1'을, A 가 C 일 경우 '2', 둘 다 아닐 경우 '3'
  • ROUND(N,M): N을 M자리까지 반올림, M 생략시 소수점 위로 반올림

  • CEIL(N): N보다 큰 가장 작은 정수

  • FLOOR(N): N보다 작은 가장 큰 정수

  • TRUNC(N,M): N에서 M자리 미만을 버린다.

  • 몫과 나머지 구하기

# 정수 + 소수점 없이
SELECT 10 / 3 AS quotient
     , 10 % 3 AS remainder
     
# 정수 + 소수점 있이
SELECT 10.0 / 3               
     , CONVERT(float, 10) / 3 
     
# 실수
SELECT FLOOR(10.1 / 3) AS quotient
     , 10.1 % 3        AS remainder
  • POWER(N,M): N의 M제곱

  • SQRT(N): N의 제곱근

  • ABS(N): N의 절대값


2. 날짜 관련 함수

  • 날짜 + 숫자 N: 날짜에 N일 더한 날짜

  • 날짜 - 숫자 N: 날짜에 N일 뺀 날짜

  • 날짜 + N/24: 날짜에 N시간을 더한 날짜

  • 날짜 - 날짜: 두 날짜 사이 일수


  • DATEDIFF(expr, expr2) - 두 기간 사이의 일수 계산

  • TIMEDIFF(expr, expr2) - 두 기간 사이의 시간 계산

  • PERIOD_DIFF(P1, P2) - 두 기간 사이의 개월 수 계산

  • TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2) - 두 기간 사이의 시간 계산

SELECT TIMESTAMPDIFF(MONTH,'2021-02-01','2022-03-01');
	-> 13
SELECT TIMESTAMPDIFF(YEAR,'2021-02-01','2022-03-01');
	-> 1
SELECT TIMESTAMPDIFF(HOUR,'2022-02-01','2022-02-03');
	-> 48
# MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR

3. 데이터 변환 함수

  • TO_CHAR: 날짜나 숫자를 문자형으로 변환
to_char('2018/12/27', 'YYYY/MM/DD')
to_char(sysdate, 'YYYY-MM-DD:HH24:MI:SS')
  • TO_DATE: 데이터를 날짜형으로 변환

  • TO_NUMBER: 데이터를 숫자로 해석


4. 문자 치환 함수

  • INITCAP(): 첫 문자만 대문자 치환

  • UPPER(): 전체 대문자 치환

  • LOWER(): 전체 소문자 치환

  • SUBSTR(원본문자열 혹은 컬럼, 시작위치, 추출개수)

  • INSTR(추출 문자열 또는 컬럼, 찾고자하는 문자열, 시작위치, 반복번호):

instr('ab@cd@ef','@',1,1) # 첫 번째 발견되는 @의 위치
instr('abcabcabc', 'c', -3,1) # 역방향 스캔
substr('abcabcabc', -3, 3) # 정방향 스캔

  • LPAD(추출 문자열 또는 컬럼, 만들 총 자리수, '왼쪽에 채울 문자')

  • RPAD(추출 문자열 또는 컬럼, 만들 총 자리수, '오른쪽에 채울 문자')

중간에 있는 문자는 제거할 수 없고, 오로지 왼쪽 혹은 오른쪽에 있는 특정 문자만 제거 가능. 제거하려는 특정 문자가 아닌 다른 문자가 스캔되면 제거 과정을 멈춤.

  • LTRIM(추출 문자열 또는 컬럼, '제거할 문자')

  • RTRIM(추출 문자열 또는 컬럼, '제거할 문자')

  • TRIM(추출 문자열 또는 컬럼): 공백 제거

  • REPLACE('문자열 또는 컬럼', '찾을 문자열', '바꿀 문자열'): 단어 단위 치환

  • TRANSLATE ('문자열 또는 컬럼', '찾을 문자열', '바꿀 문자열'): 문자의 1:1 치환

translate('abc', 'ab', '12'),  # a,b의 짝꿍이 각각 1,2로 있으므로 제대로 치환
translate('abc','ab', '1'),  # b의 짝꿍이 없으므로 삭제
translate('abc','a', '12')  # 2의 짝꿍이 없으므로 무시됨

  • LENGTH(): 문자열 길이

  • LENGTHB(): 문자열 바이트 수

  • CONCAT(): 문자열 합쳐주는 함수


5. null 치환 함수

  • NVL(조사할 컬럼, null일 경우 치환할 값) -- 주의. 조사할 컬럼과 치환할 값의 데이터 타입이 같아야 함
  • NVL2(조사 대상 컬럼 , null이 아닐 경우 치환할 값 , null일 경우 치환할 값)

https://gent.tistory.com/515
https://ponyozzang.tistory.com/697
https://data-make.tistory.com/77
https://data-make.tistory.com/6

profile
개발자

0개의 댓글