Oracle Count 函式的實驗

2021-08-25 22:51:04 字數 1053 閱讀 8215

以下一點小經驗,希望對你們有所幫助。

在做專案的時候,有修改到的procedure中寫了類似這樣一句

select count (b.planrmk) into varplantmkcount from smtbcrud b where …

if varplantmkcount > 0

select b.planrmk into varplantmk from smtbcrud b where …

if varplantmk is null

… end if;

end if;

本意是想如果smtbcrud裡面如果找到了匹配的行的話才繼續做if裡面的東西,而我的if裡面做的是判斷如果planrmk為空的話則update為*.

用意很簡單,但是卻出現了問題,planrmk 為空的話update不了。

大家可以試一下,如果tablea的字段a的值全部為null的話,大家用這句sql試一下:

select count(a) from tablea

結果是多少?tablea的行數(我以前是這樣認為的)?錯了,結果為0.

原來count會忽略null的行。

可以再試乙個例子,還是tablea的字段a, 除了一行是有值之外,其他行都是為null,再用這句sql:

select count(a) from tablea

想必大家都知道結果了,結果為1,null的行被忽略掉了。

怎麼解決?用select(pk),select count(*),select count(1)或者select(not null column)代替就好了。

當然這些方式在效率上會有一點點差異,但如果不是資料量很大的話,基本上我們可以忽略。如果有可能資料量很大的話,我的愚見是select(pk)>select count(*)>select count(1)>select(not null column), 大家可以上網找一些資料,或者自己做一些測試。

當然你硬要用這個字段的話,又想不忽略null行的話,你可以試一下

select count(nvl(a,0)) from tablea

ORACLE count 統計函式的使用

sql中用於統計的函式時 count 針對count函式的使用做乙個記錄,很簡單。首先我資料庫中建個表test,資料如下 表中id和name都是不重複的資料,home tel path中存在重複資料,其中path中存在空資料。現查詢語句如下 select count count 1 count di...

實變函式 實分析總結

一 概述。實變函式,又叫實分析,整本書滿滿的證明就講了乙個勒貝格積分。最為大家所熟知的是用牛頓 萊布尼茨公式算的黎曼積分。但是黎曼積分本身依賴於函式的連續性,像不連續的狄利克雷函式就無法積分了。為了解決這一問題,勒貝格利用分割值域的方法,使得函式可積。但是分割出來的值域,只能放在一起,形式集合。如果...

AfxBeginThread 函式的用法例項講解

afxbeginthread 使用者介面執行緒和工作者執行緒都是由afxbeginthread建立的。現在,考察該函式 mfc提供了兩個過載版的afxbeginthread,乙個用於使用者介面執行緒,另乙個用於工作者執行緒,分別有如下的原型和過程 使用者介面執行緒的afxbeginthread 工作...