2014-06-16 96 views
1

我準備爲Oracle SQL基礎I考試時遇到這個問題煩惱:SQL基本面實踐select語句

  1. 檢查EMP表的結構:

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

我想生成滿足以下要求的報告: 1.顯示員工姓名和佣金金額 2.不包括沒有交流員工的員工ommission 3.顯示爲員工,其SALARY沒有一個值

您發出下面的SQL語句零:

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

是什麼結果?

答案是成功執行但不顯示任何結果。

爲什麼沒有顯示,但?

此外,如果你們有良好的SQL基礎知識練習題的任何資源,請讓我知道。

回答

3

小心使用空值和比較值。如果你想要有一些數據的行,你應該有「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的鏈接。