본문 바로가기
Computer Science & Engineering/Oracle

[SQL_오라클] WHERE 절

by Mr.꾸 2022. 6. 8.
반응형

[SQL_오라클] WHERE 절

함수
  • 정수형 함수
    • ROUND(n, i)
      • n을 소수점 이하 i 번째 자리까지 보여달라!! 곧 i+1번째에서 반올림을 한다
      • i가 0 이면 소수점 이하 0번째 자리, 곧 일의 자리까지 보여달라는 말
        같은 의미로 -1이면 일의 자리에서 반올림
    • TRUNC(n1, n2)
      • ROUND와 용법은 같고 내림
        n2까지 보여달라!!
  • 문자형 함수
    • CONCAT(char1, char2)
      • '||'와 같은 기능
    • INITCAP(char)
      • 첫 문자를 대문자로 나머지는 소문자로
      • 보통은 공백이나 탭을 공백 문자로 사용하지만 알파벳이 아닌 문자 모두를 구분자로 인식하게 된다.

      • i am a boy => I Am A Boy
        i am a가 boy  => I Am A Boy
    • LPAD(expr1, n, expr2), RPAD(expr1, n, expr2)
      • LPAD는 expr1을 n 만큼 늘린 후 expr2를 왼쪽에 채운다
    • (계속...)
  • 날짜형 함수
    • SYSDATE - os에서 받아옴
    • CURRENT_DATE
      • SYSDATE와 같지만 현재 session의 시간대(TIME_ZONE)를 기준으로 한 현재 날짜를 반환
      • session이란 오라클을 사용하기 위해 오라클 서버에 접속되어 있는 상태를 말한다.
    • 날짜 : 빼기 = 날짜의 사이라는 의미가 있다
               나누기 = 몇 주가 나온다는 의미가 있다
  • Null 관련 함수
    • NVL(expr1, expr2)
      • expr1 이 Null 이면 expr2를 반환, Null이 아니면 expr1을 반환
    • NVL2(expr1, expr2, expr3)
    • expr1이 Null 이면 expr3 반환, Null이 아니면 expr2 반환
  • 변환 함수
    • Column을 건들 생각 마!!
      • 예를 들어 hire_date로 index를 만들었을 경우 row_id(row의 주소 값 = 책 뒤의 찾아보기의 page값과 같은 거)가 TO_CHAR를 했을 때 원래의 값과 달라져서 다시는 그것을 이용해서 접근할 수 없다.
      • 다른 예로 phonenumber를 index로 한 table이 있다고 하자.
        phonenumber는 010-XXXX-XXXX 이런 식으로 되어 있는데
        WHERE phonenumber like '010%' 이렇게 하지 않고
        WHERE substr(phonenumber, 1, 3) = '010' 이렇게 해버리면
        phonenumber의 값이 010, 011 이런 식으로 바뀌어서 그 index로 접근을 할 수 없게 된다. FBI라는 것으로 위와 같은 식으로 하는 방법도 있다.
    • TO_CHAR
    • TO_NUMBER
    • TO_DATE
  • DECODE
    • if ~ elseif ~ else에 해당
    • DECODE(expr, search1, result1, search2, result2,.., default_result)
      • expr가 search1에 해당하면 result1으로
    • 비교대상이 되는 expr과 search 표현식은 데이터 타입이 같아야 한다.
      자동 형 변환이 가능한 경우에는 오라클에서 자동으로 해주지만 그렇지 않은 경우에는 오류 발생
    • expr과 search 값이 같은 것만 비교
  • CASE
    • 기본형
      • case 대상 값 when 비교 값 1 then 처리 1
                          when 비교 값 2 then 처리 2
        ..
        ..
        END
    • 검색형
      • case when 비교조건 1 then 처리 1
                when 비교조건 2 then 처리 2
        ..
        ..
        END
    • DECODE 보다 확장성이 좋고 가독성이 좋다
      DECODE는 >= 와 같은 비교는 하지 못하고 equal만 사용 가능.. 물론 greater then 머 이런 함수가 있다고 하니 이러한 것을 이용하면 될 것 같기는 하는데 CASE로 구현하는 것이 훨씬 좋은 것 같다.
728x90

'Computer Science & Engineering > Oracle' 카테고리의 다른 글

[SQL_오라클] 서브쿼리  (0) 2022.06.10
[SQL_오라클] JOIN  (0) 2022.06.10
[SQL_오라클] GROUP QUERY  (0) 2022.06.10
[SQL_오라클] 1일차 숙제  (0) 2022.06.10
[SQL_오라클] 시작  (0) 2022.06.08

댓글