Oracle DataBase

SELECT - Function (上)

단일 행 함수

N개 Input에 대한 N개 Output 결과를 반환하는 함수를 단일 행 함수라 한다.


  • 문자 관련 Function
    • LENGTH()
      • 문자열의 길이(Byte값을 기준으로)를 반환해주는 함수
      • 한글과 영어는 BYTE값이 다르기 때문에 LENGTH가 다를 수 있음을 주의해야 한다.
      • CHAR 타입은 실제 길이와 상관없이 고정 LENGTH를 반환
      • VARCHAR 타입은 입력된 실제 LENGTH를 반환
    • INSTR()
      • 문자열이 지정한 위치부터 지정한 횟수만큼 나타난 시작위치를 반환해주는 함수
      • INSTR(STRING, SUBSTR, [POSITION, [OCCURRENCE]])
    • LPAD/RPAD
      • 기준 문자열에 LEFT나 RIGHT에 N길이가 되도록 문자열을 추가해주는 함수
      • 보기 좋게 공백이나 특수문자를 추가해줄 때 사용하면 좋을 듯 싶다.
      • LPAD( string, N, [str] )
    • L/R TRIM
      • 해당 문자열에서 지정한 특정 문자열을 모두 제거하는 함수
      • 특정 문자열을 패턴이 아닌 종류로 보는 것이 좋다.
      • 주의할 점은, 방향성이 주어진 TRIM 함수들은 진행 중에 주어진 문자열이 아닌 다른 문자열을 만나면 함수롤 종료한다는 것!
      • LTRIM( STRING, STR )
    • TRIM
      • L/R TRIM을 통합할 수 있는 TRIM
      • L/R 과 다른 점은 trim_char를 한 글자만 주어야 한다.
      • L/R 처럼 주어진 trim_char외 다른 글자가 발견되면 TRIM을 중지한다.
      • TRIM(LEADING | TRAILING | BOTH [trim_char] FROM [basis_char])
    • SUBSTR
      • SUBSTRING 함수 (그닥 설명할 것이 없네…)
      • SUBSTR( STRING, POSITION, [ LENGTH ] )

  • 숫자 관련 Function
    • ROUND
      • 흔하게 있는 함수 중 하나인, 반올림 하는 함수
      • ROUND( number, [ decimal_places ] )
      • decimal_places > 0 : 소수점 이하 자리 의미
      • decimal_places < 0 : 소수점 이상 자리 의미
    • TRUNC
      • 지정된 자릿수에서 절삭하는 함수 (무조건 버림)
      • TRUNC( NUMBER, [ DECIMAL_PLACES ] )

  • 날짜 관련 Function
    • ADD_MONTHS
      • 주어진 DATE에 MONTH만큼 더하는 함수
      • ADD_MONTH( DATE, MONTH )
    • MONTHS_BTWEEN
      • 두 DATE 사이의 값을 알아보는 함수
      • 이 함수를 통해 Oracle DB에서 날짜로 연산이 가능하다는 것을 알 수 있다.
      • MONTHS_BETWEEN( DATE1, DATE2 )
    • SYSDATE
      • 시스템 상의 현재 시간을 다루는 함수

  • type 변환 함수
    • TO_CHAR
      • SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') "TO_CHAR" FROM DUAL;
      • SELECT TO_CHAR(12345,'000,00') "TO_CHAR" FROM DUAL;
    • TO_DATE
      • SELECT TO_DATE('20190308') FROM DUAL;
      • SELECT TO_DATE('20190308','yyyMMdd') FROM DUAL;
      • SELECT TO_DATE(20190308) FROM DUAL;
    • TO_NUMBER
      • SELECT TO_NUMBER('7654321') FROM DUAL;
      • SELECT TO_NUMBER(TO_CHAR(sysdate,'yyyy')) FROM DUAL;
      • 데이터를 NUMBER로 바꾸기 위해서는 일단 STRING으로 바꾸는 작업을 해주어야 한다.

Written on January 31, 2020