掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
SQL 函數(shù)中的空值指的是 SQL 函數(shù)的參數(shù)存在空值,當(dāng) SQL 函數(shù)的參數(shù)為空值時(shí),大多數(shù)標(biāo)量函數(shù)都返回 ?NULL?,分析函數(shù)會(huì)忽略空值。您可以通過(guò) ?NVL? 函數(shù)的返回值確定空值。

?NVL? 函數(shù)的表達(dá)式為 ?NVL(expr1,expr2)?,如果 ?expr1? 不是 ?NULL?,返回 ?expr1?,否則返回 ?expr2?。
如下所示,給定 ?expr1? 參數(shù)為 ?NULL?,查詢 ?NVL(expr1,0)? 表達(dá)式的返回值。
執(zhí)行以下語(yǔ)句:
SELECT NVL(NULL,0) FROM DUAL;查詢結(jié)果如下:
+-------------+
| NVL(NULL,0) |
+-------------+
| 0 |
+-------------+?expr1? 是 ?NULL?,則表達(dá)式 ?NVL(expr1,0)? 的返回值為 0;?expr1? 不是 ?NULL?,則表達(dá)式的返回值為 ?expr1?。
在使用 ?AVG?,?MAX?,?SUM?,?COUNT? 等分析函數(shù)時(shí),為 ?NULL? 的紀(jì)錄會(huì)被忽略。
如下所示,向 tbl_a 表中插入數(shù)據(jù)并執(zhí)行以下語(yǔ)句:
CREATE TABLE tbl_a (col_a varchar2(1), col_b int );
INSERT INTO tbl_a VALUES (NULL, 3);
INSERT INTO tbl_a VALUES (NULL, NULL);
INSERT INTO tbl_a VALUES (NULL, 1);執(zhí)行以下語(yǔ)句:
SELECT * FROM tbl_a;查詢結(jié)果如下:
+-------+-------+
| COL_A | COL_B |
+-------+-------+
| NULL | 3 |
| NULL | NULL |
| NULL | 1 |
+-------+-------+查詢的結(jié)果如下:
SELECT AVG(col_b) FROM tbl_a; -- 結(jié)果為 2 ,
SELECT MAX(col_b) FROM tbl_a; -- 結(jié)果為 3
SELECT SUM(col_b) FROM tbl_a; -- 結(jié)果為 4
SELECT COUNT(col_b) FROM tbl_a; -- 結(jié)果為 2
SELECT COUNT(col_a) FROM tbl_a; -- 結(jié)果為 0
SELECT COUNT(*) FROM tbl_a; -- 結(jié)果為 3?NULL? 的紀(jì)錄被忽略了。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流