(연산불가)
공백문자, 0 도 아님. 공백문자는 아스키코드 값을 가짐.
제비연 : 제어불가, 비교불가, 연산불가
7번의 경우 SAL 속성 내부에 NULL 이 있는 경우
널과 관련된 연산은 모두 null 이다.
(비교불가)
(제어불가)
비교 연산자로는 불가하다. COMM 이 NULL 인 경우 is null is not null 을 사용한다
1번의 경우 암시적 변환이 이루어짐. COMM은 정수형인데 length는 문자열 함수이다.
길이가 없으니까 0을 리턴할 거라 생각하지만, 그게 아니다.
그냥 함수를 적용해도 null 을 리턴한다.
2번의 경우
하지만 3번의 경우 null을 무시하는 함수이다.
concat 함수는 문자를 합성하는 함수인데 COMM 은 숫자이므로 암시적 데이터 변환이 발생한다.
nvl(COMM,-1) → 널이면 -1로 치환해라라는 의미이다.
decode → SQL 내부에서 조건 처리를 위해 사용하는 함수
12번은 이런게 있구나만 알고 있어라. ORDER BY 에서 연산을 하는 과정을 잘 쓰지 않는다.
NULL 은 가장 큰 값으로 오라클에서는 간주한다.
select distinct comm from emp;
null 도 distinct에 포함된다.
ㅇ
이렇게 하드코딩이 될 수 있다.
3번의 경우 데이터를 분류하는 작업임. HIGH, MID, LOW
데이터를 SELECT 해오며 분류까지 하는 작업
하지만 3번,4번은 쓰지 않음
왜냐하면 DECODE를 계량한 CASE가 나옴.
SAL 비교 순서를 바꾸었는데, 출력이 되지 않았고, SAL 순서를 다음과 같이 했을 경우에만 값을 확인할 수 있었다.
CASE로 처리한 것과 DECODE로 처리한 것 모두 ALIAS가 가능하다.
decode도 다음과 같이 alias가 가능하다.
* 부서별 차등 보너스 계산 SQL을 작성 하십시요
- 10번 부서 급여의 0.3% , 20번부서 급여의 20%, 30번 부서 급여의 10%,
나머지 모든 부서 1%
- 부서 번호, 이름,직무,급여,보너스
- 부서별, 최고 보너스 순으로 정렬
- 소수점 절
select deptno, ename, job, sal,
case when deptno=10 then trunc(sal*1.003)
when deptno=20 then trunc(sal*1.2)
when deptno=30 then trunc(sal*1.1)
else
trunc(sal*1.1)
end as bonus
from emp order by deptno, bonus desc;
이것도 돼!!
다음과 같이 구현할 수 있음
'데이터베이스' 카테고리의 다른 글
오라클실습 (190507) (0) | 2019.05.07 |
---|---|
ROWNUM (0) | 2019.05.03 |
group by, distinct, schema, 시분초 (0) | 2019.05.03 |
csv 파일 추출법 - SQL (0) | 2019.05.03 |
Syntax diagram - SELECT (0) | 2019.05.03 |