2014-06-16 5 views
1

나는 오라클 SQL 기본 I 시험을 준비하고 연습을하고이 질문에 문제가 있어요 :SQL 기초는 select 문

Name  Null? Type 
EMPNO  NOT NULL NUMBER(3) 
ENAME    VARCHAR2(25) 
SALARY    NUMBER(10,2) 
COMM_PCT   NUMBER(4,2) 
:

  1. 가 EMP 테이블의 구조를 검사

    다음 요구 사항을 충족하는 보고서를 생성하고 싶습니다. 1. 직원의 이름과 수수료 금액을 표시합니다. 2. ac가없는 직원은 제외합니다. ommission 3. 표시 SALARY

    다음과 같은 SQL 문을 발행하지 않는 직원 제로 :

    SQL>SELECT ename, NVL(salary * comm_pct, 0) 
    FROM emp 
    WHERE comm_pct <> NULL; 
    

    결과가 무엇입니까?

    ANSWER is 성공적으로 실행되지만 결과가 표시되지 않습니다.

    아무 것도 표시되지 않는 이유는 무엇입니까?

    또한 좋은 SQL 기초에 대한 자료가 있으면 알려 주시기 바랍니다.

답변

3

nulls 및 비교에주의하십시오. 데이터가있는 행을 원할 경우 "where comm_pct is not NULL"이됩니다. 비교 연산자 <>을 NULL과 함께 사용하면 아무 것도 반환하지 않습니다.

select * from dual where dummy <> NULL 

질문에 다른 물건이 시점에서 단지 산만

select * from dual where dummy is not null; 

와 동일하지 않습니다. NULL을 다른 것으로 비교할 수는 없습니다 (null은 실제로 "값이 무엇인지 알지 못합니다"를 의미합니다).

= 비교와 같은 것. "WHERE comm_pct = NULL"이라고 말하면 "where comm_pct is NULL"이라고 말합니다.

다음은 온라인 SQL Reference Guide입니다. 다음은 NULLs and comparisons을 가리키는 링크입니다.