반응형
[SQL_오라클] WHERE 절
함수
- 정수형 함수
- ROUND(n, i)
- n을 소수점 이하 i 번째 자리까지 보여달라!! 곧 i+1번째에서 반올림을 한다
- i가 0 이면 소수점 이하 0번째 자리, 곧 일의 자리까지 보여달라는 말
같은 의미로 -1이면 일의 자리에서 반올림
- TRUNC(n1, n2)
- ROUND와 용법은 같고 내림
n2까지 보여달라!!
- ROUND와 용법은 같고 내림
- ROUND(n, i)
- 문자형 함수
- 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를 왼쪽에 채운다
- (계속...)
- CONCAT(char1, char2)
- 날짜형 함수
- 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 반환
- NVL(expr1, 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
- Column을 건들 생각 마!!
- 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
- 검색형
- case when 비교조건 1 then 처리 1
when 비교조건 2 then 처리 2
..
..
END
- case when 비교조건 1 then 처리 1
- 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 |
댓글