回答
我不知道Oracle的具體情況,但ANSI SQL,COUNT(rowName)
不計算NULL
的值,但COUNT(*)
呢。因此,您可以編寫
SELECT COUNT(*) FROM YourTable WHERE YourColumn IS NULL
它對YourTable中將YourColumn設置爲NULL的行進行計數。
甲骨文documentation指出:
除了 COUNT(*),並把所有聚合函數忽略空值。 您可以將 參數中的NVL函數用於集合函數,以 替代空值的值。
作爲一個例子,使用SCOTT模式:
SQL> select empno, sal, comm
2 from emp;
EMPNO SAL COMM
---------- ---------- ----------
7369 800
7499 1600 300
7521 1250 500
7566 2975
7654 1250 1400
7698 2850
7782 2450
7788 3000
7839 5000
7844 1500 0
7876 1100
7900 950
7902 3000
7934 1300
14 rows selected.
可以看到,在通訊專欄4已知的值(即非空)和10個未知值(即空)
由於count(your_column_name)
忽略了空值,因此需要將未知值替換爲可以引用的值。這可以使用 NVL函數來實現。
SQL> select count(nvl(comm, -1)) "number of null values"
2 from emp
3 where nvl(comm, -1) = -1;
number of null values
---------------------
10
我已經使用了值「-1」的「別名」我的空值,因爲我知道,「-1」不是COMM列中現有的值。
編輯:
繼羅布的建議。它能夠除去從上述示例中的where子句和使用NVL2函數,如下所示:
SQL> select count(nvl2(comm,null,-1)) "number of null values"
2 from emp
3/
number of null values
---------------------
10
或者簡單地說,沒有where子句:select emp(012)來自emp – 2010-05-17 06:26:03
的計數(nvl2(comm,null,1))感謝Rob - 我不知道。將添加到我的答案。再次感謝 – 2010-05-17 19:06:13
作爲替代MDMA的響應。 如果你不想把過濾在那裏你可以
SELECT COUNT(case when xxx IS NULL THEN 1 end) cnt_xxx_null
FROM table
如果你想與空太指望其他值,則使用COALESCE功能的意願會提高執行時間
Oracle Differences between NVL and Coalesce
SELECT COUNT(COALESCE(_COLUMN, 1)) AS CNT FROM _TABLE
如果你正在計算的列,用''''或'ábc'或somthing替換'1'。順便說一下,我們也通過合併來改變它,使其不能在數據庫的現實中發生。無論如何。因此,對於具有字符的表格: SELECT COUNT(COALESCE(_COLUMN,'abc'))作爲_TABLE的CNT – cybork 2016-02-18 19:30:38
我可能會嘗試反空,看效果
SELECT
COUNT(DECODE(YourField, null, 1, null)) Nulls,
count(*) Everything,
COUNT(YourField) NotNulls
FROM YourTable
一切都應該等於空值+ notnulls
select count(nvl(values, 0)) from emp where values is null;
爲什麼count(nvl(values,0))?做一個'select count(1)from ...'會做同樣的事情。 – 2016-08-30 07:50:59
- 1. 用NULL值計算
- 2. 如何在DENSE_RANK()中不計數NULL值?
- 3. NULL不計算在合計SQL中
- 4. 如何計算表中的所有NULL值?
- 5. 如何計算計數值?
- 6. 「null」在數學計算?
- 7. 如何在NSTableView中顯示計算值?
- 8. 只計算每行1的計數值
- 9. 如何計算基於列值的行null和非空
- 10. OnSeekBarChangeListener總是在Android中計算爲null
- 11. 如何強制執行NOT NULL在視圖中的計算列
- 12. 我在Datagridview的計算列中獲得了預期的NULL值
- 13. C++中的時間(NULL)只計算秒數,而不是毫秒
- 14. 在計算平均值時處理NULL值
- 15. 如何計算幾何值在C#
- 16. 如何計算Access 2010表中所有列中的所有NULL值?
- 17. 如何計算極限值
- 18. 如何計算輸入值
- 19. 如何計算DateTime.UtcNow值?
- 20. sql如何計算總值
- 21. 如何計算這個值?
- 22. 如何計算平均值?
- 23. 如何計算平均值?
- 24. 如何計算平均值?
- 25. R:如何計算計算字段列中的值R
- 26. 如何計算MS reportviewer/rdlc中的平均計算平均值?
- 27. 如何計算MySQL中的計算平均值?
- 28. 如何進行計算,並且只有在列中最少有3個值時才執行計算?
- 29. 如何在AngularJs視圖中多次顯示相同的計算值,只需調用一次計算函數
- 30. 如何計算每行的foreach double值以計算爲單值?
IT工作!.... THANK YOU SO MUCH :-) – 2010-05-15 21:37:40
在我的Oracle數據庫這是行不通的。計數結果爲0,因爲null不能計數。我們使用聯合來解決這個問題。 – cybork 2016-02-18 19:27:12